ios 获取屏幕刷新率
时间: 2023-05-13 18:00:21 浏览: 132
iOS 获取屏幕刷新率可以通过Core Animation框架中的CADisplayLink类实现。CADisplayLink是一个定时器类,可以监听屏幕的刷新频率,并在每一帧结束时发送回调。
首先需要创建一个CADisplayLink对象,并添加到主运行循环中:
```
CADisplayLink *displayLink = [UIScreen mainScreen].maximumFramesPerSecond == 0 ?
[CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick:)] :
[UIScreen mainScreen].linkWithPreferredFramesPerSecond == 0 ?
[CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick:)] :
[UIScreen mainScreen].linkWithPreferredFramesPerSecond == 60 ?
[CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick60fps:)] :
[UIScreen mainScreen].linkWithPreferredFramesPerSecond == 120 ?
[CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick120fps:)] :
[UIScreen mainScreen].linkWithPreferredFramesPerSecond == 90 ?
[CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick90fps:)] : nil;
[displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
```
然后实现对应的回调方法,在每帧结束时获取屏幕的刷新率:
```
- (void)displayLinkTick:(CADisplayLink *)link {
CGFloat frameInterval = link.duration/60.0;
screenRefreshRate = (int)(1.0/frameInterval);
}
```
最后需要注意的是,在iOS 10之后,为了省电和减少GPU负担,屏幕刷新率可能会动态调整,因此获取到的屏幕刷新率并不一定是恒定的。