源码地址
我的github : https://github.com/290138645/RLAnimation.git
实现效果
代码实现
我们先把问题拆解:
1.将一个淡蓝色的view从屏幕左侧移入,这一步成功了,我们再去考虑实现边界的弯曲。为了保障不被其他视图遮挡,我决定把它加在window 上。
2.下面我们继续完成第二部分------实现边界的反弹!
这里就涉及到了两个技术点一- CA-DisplayLink以及贝塞尔曲线。贝塞尔曲线已经在前面有所介绍,这里介绍一下CA-DisplayLink。简单地理解,CADisplayLink 就是一个定时器,每隔1/60秒(16.66667ms)刷新一次屏幕。使用的时候,我们要把它添加到一个runloop 中,并给它绑定一个target 和selector,才能在屏幕以1/60秒刷新的时候实时调用绑定的方法。
3.最重要的部分来了------在displayLinkAction:方法中实现弹窗动画!
「创建两个辅助视图,设置起点和终点都一样,利用弹性动画自身的震荡特点,赋予两个辅助视图以不同的动画参数,实时计算两个辅助视图的横坐标X之差,就可以间接地得到一组从0增加到一个正数后,递减到一个负数,最后再回到0的数据。」
到这就结束了,源码请移步github下载!
最后希望大家自己动手敲一遍,后面我也会继续更新,如果有喜欢的同学可以关注一下
扫描下方公众号关注最新更新