美文网首页
执行动画时该使用CADisplayLink还是Timer?

执行动画时该使用CADisplayLink还是Timer?

作者: 也许________ | 来源:发表于2017-10-16 22:42 被阅读23次
相同点与不同点

相同点:
两者都可以做为定时器使用
不同点:
就体验性来讲,动画方向使用CADisplayLink更适合,因为它调用频率精准,不会因为CPU调度发生调用延迟

观察分别使用两者进行动画操作时的表现

前者是Timer,后者是CADisplayLink,能够明显看出Timer下动画执行是有短暂卡顿的,而后者动画就很平滑

timer下的表现 CADisplayLink下的表现
探究一下原因(抄别人总结的http://www.jianshu.com/p/c35a81c3b9eb

iOS设备的屏幕刷新频率是固定的,CADisplayLink在正常情况下会在每次刷新结束都被调用,精确度相当高。
NSTimer的精确度就显得低了点,比如NSTimer的触发时间到的时候,runloop如果在阻塞状态,触发时间就会推迟到下一个runloop周期。并且 NSTimer新增了tolerance属性,让用户可以设置可以容忍的触发的时间的延迟范围。
CADisplayLink使用场合相对专一,适合做UI的不停重绘,比如自定义动画引擎或者视频播放的渲染。NSTimer的使用范围要广泛的多,各种需要单次或者循环定时处理的任务都可以使用。在UI相关的动画或者显示内容使用 CADisplayLink比起用NSTimer的好处就是我们不需要在格外关心屏幕的刷新频率了,因为它本身就是跟屏幕刷新同步的。

相关文章

网友评论

      本文标题:执行动画时该使用CADisplayLink还是Timer?

      本文链接:https://www.haomeiwen.com/subject/ljzluxtx.html