定时器对象
允许应用将其绘制和展示的刷新率同步。
声明
继承自NSObject
概述
在初始化CADisplayLink对象时,需要提供一个target对象和一个selector,以备在屏幕更新时调用。为了同步展示loop,使用 addToRunLoop:forMode: 方法添加其到run loop中。
一旦display link和run loop联系在一起,那么就会在屏幕内容需要刷新时,调用target上的selector。target可以读取display link的timestamp属性来追踪上一帧展示的时间。举个例子,一个展示视频的应用可以使用timestamp来计算接下来视频的哪一帧会被调用。执行自身动画的应用可以使用timestamp来判断被展示的对象在接下来的帧中,在哪里,怎样出现。
duration属性提供了在 maximumFramesPerSecond 处的帧之间的时间量。为了计算实际的帧持续时间,可以使用 targetTimestamp 减去 timestamp。我们可以使用实际的帧持续时间来计算展示的帧率,下一帧展示的大约时间,也可以调整绘制行为以便下一帧在展示时就准备好了。
应用可以通过设置paused属性为YES,来禁用通知。如果应用在提供时间内没有帧数,那么我们也可以选择更慢的帧率。对用户来说,帧率较慢但持续的应用会看起来比跳帧的应用更加平滑。我们可以通过设置 preferredFramesPerSecond 属性来定义每秒的帧数。
当应用完成了display link,就应该调用invalidate来将其从所有run loops中移除,并和target解关联。
CADisplayLink不能被子类化。
创建实例
+ displayLinkWithTarget:selector:
返回一个新的display link.
调度Display Link 发送通知
- addToRunLoop:forMode:
给run loop注册display link
- removeFromRunLoop:forMode:
从run loop给定模式中移除display link
- invalidate
从run loop所有与模式中移除display link。
配置Display Link
duration
屏幕刷新的时间间隔。
preferredFramesPerSecond
display link回调中设置的帧率。
frameInterval
在display link 再次通知target之前通过的帧数。(已弃用)
paused
表示target的display link通知是否被挂起的布尔值
timestamp
最后展示的一帧相关的时间值。
targetTimestamp
要展示的下一帧相关的时间值。
网友评论