可通过CADisplayLink实现。
对于CADisplayLink,苹果官方是这么解释的
/** Class representing a timer bound to the display vsync. **/
简单来说,CADisplayLink是一个定时器,是一个刷新频率和屏幕刷新率相同的定时器。
So。。。
我们可以通过这个来计算当前帧数。
直接上代码~~~
// 首先先创建CADisplayLink并添加到Runloop中。注意是NSRunLoopCommonModes哦,否则scrollview滚动过程是不会跑的。
[[CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkAction:)] addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
// 定时器刷新代码
- (void)displayLinkAction:(CADisplayLink *)link {
static NSTimeInterval lastTime = 0;
static int frameCount = 0;
if (lastTime == 0) { lastTime = link.timestamp; return; }
frameCount++; // 累计帧数
NSTimeInterval passTime = link.timestamp - lastTime;// 累计时间
if (passTime > 1) { // 1秒左右获取一次帧数
int = frameCount / passTime; // 帧数 = 总帧数 / 时间
lastTime = link.timestamp; // 重置
frameCount = 0; // 重置
NSLog(@"%d", fps);
}