0

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

但是当同一个superview中的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];

我该如何解决?

4

1 回答 1

0

从 CADisplayLink 类参考:

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

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

于 2015-11-10T12:31:01.530 回答