如何在Xcode中判断设备是否以120Hz而非60Hz运行?
判断iPhone/iPad是否支持120Hz刷新率的最佳方法
一、直接检测屏幕最大刷新率(推荐方案)
无需依赖设备型号或iOS版本,直接通过系统API获取屏幕支持的最高帧率,是最可靠且适配未来设备的方法:
- 使用
UIScreen.main.maximumFramesPerSecond属性,该值会返回屏幕支持的最大帧率。ProMotion(120Hz)设备的返回值为120,传统60Hz设备则为60。 - 代码示例(Swift):
let supports120Hz = UIScreen.main.maximumFramesPerSecond >= 120 - 补充:若需获取当前实际刷新率,可使用
UIScreen.main.refreshRate,但该值会随系统动态调整(比如静止时降到60Hz),因此检测最大帧率更适配你的游戏场景。
二、游戏帧率异常的解决办法
你的游戏在120Hz设备上速度翻倍,核心原因是游戏逻辑帧率与屏幕刷新率绑定导致。检测到120Hz支持后,只需强制锁定游戏帧率为60Hz即可:
- 若使用原生
CADisplayLink驱动游戏循环,设置其preferredFramesPerSecond = 60; - 若使用第三方游戏引擎,在引擎的帧率设置面板中强制锁定为60FPS,而非跟随屏幕刷新率。
三、设备型号检测(兜底方案,不推荐)
如果因平台限制无法调用系统API,可通过检测设备型号判断,但需持续维护型号列表以适配新发布设备:
- 目前支持120Hz的设备包括iPhone 13 Pro/Pro Max、iPhone 14 Pro/Pro Max、iPad Pro(10.5英寸及后续Pro机型)等。
内容的提问来源于stack exchange,提问作者Reanimation
相关产品推荐
相关产品推荐

