iOS计算当前帧数

可通过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);

    }

你可能感兴趣的:(iOS计算当前帧数)