做一个表情雨的需求:类似微信聊天中输入“生日快乐”关键词,会下落🎂的图片。在此基础上加上点击图标做响应,比如抢红包。

暂做思路整理,得空上传完整demo。

难点:

1、表情雨的下坠动画,每一个表情图标路线不一样。

2、图层CALayer不同于UIView,没有点击响应。

 

一、业务逻辑

1、关键词的获取与更新

聊天页面中,做缓存与更新的操作。每隔一天更新一次关键词。

2、触发时机

收到消息时、自己发消息时,将消息内容与缓存中的关键词进行对比,如果匹配就开始下表情雨。

 

二、红包雨动画实现

1、用定时器循环创建图标CALayer画布,指定CALayer内容为图标image,并给CALayer命名(关系到之后的点击操持)。

2、绘制CALayer动画,指定运行路线,即表情图标掉落路线。

路线制定原理:每一个表情坠落时,运动轨迹都是不一样的,那么表情的轨迹点的x值随机生成就可以了,具体实现入下:

3、给整个页面view添加点击红包手势

4、红包手势里的实现:

获取点击的位置;

通过CALayer的名字,一一判断表情图标的CALayer,是否是点击事件接受者,hittest方法。

实现点击后的操作,比如抢红包。

5、动画完成时,停止计时器,并移除view中的点击红包手势

分类: iOS开发

发表评论

电子邮件地址不会被公开。 必填项已用*标注