CADisplayLink

定时器对象
允许应用将其绘制和展示的刷新率同步。

声明

继承自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  
要展示的下一帧相关的时间值。  

你可能感兴趣的:(CADisplayLink)