如何在mainRunloop中使用CADisplaylink循环调用一个方法,在该方法中我改变了视图的位置以显示动画

时间:2015-11-10 11:59:28

标签: ios objective-c animation nstimer cadisplaylink

我想在我的视图中显示动画。所以我使用CADisplaylink作为计时器,以便在一秒钟内(60FPS)调用更新方法 60次

但是当同一超级视图重新加载的tableview时,CADisplaylink仅调用40-50次秒(40-50FPS)。

self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(update)];
self.displayLink.paused = YES;
[self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];

我该如何解决?

1 个答案:

答案 0 :(得分:0)

从CADisplayLink类引用:

  

目标可以读取显示链接的时间戳属性以进行检索   显示上一帧的时间。例如,一个   显示电影的应用程序可能会使用时间戳来计算   接下来将显示哪个视频帧。执行的应用程序   它自己的动画可能会使用时间戳来确定位置和方式   显示的对象出现在即将出现的帧中。持续时间属性   提供帧之间的时间量。您可以在中使用此值   你的应用程序来计算显示器的帧速率,   显示下一帧的大致时间,并进行调整   绘制行为,以便及时准备下一帧   显示。

意味着帧率由系统决定,你应该将动画作为基础。无法设置帧速率,而是由多种因素组合决定(例如,处理器密集型活动活动的程度,UI的图形密集程度等)。