如何降低 swiftUI 应用程序中的帧速率?

问题描述 投票:0回答:1

我希望通过将帧速率降低至 1hz 来优化电池性能。该应用程序是一个仪表板,每秒仅更新一次,没有动画并且不具有交互性。 OLED显示屏的刷新率可以设置为1hz吗?

我尝试在应用程序委托中设置 CADisplayLink,但没有效果。

Apple 在 WWDC 2022 中提到使用这种方法,但我只能让它在我的 SwiftUI 应用程序中工作。

ios swift frame-rate cadisplaylink battery-saver
1个回答
0
投票

刷新率是整个屏幕的函数。你自己无法单方面控制它。屏幕上的其他不属于您的应用程序的内容(状态栏、动态岛)可能需要更新。不同的屏幕技术还需要不同的最低刷新率才能保持清晰的图像。这些都不受您的应用程序的控制。

ProMotion 显示器(高端 Pro/Max 设备的常用技术)的最低刷新率为 10Hz。 我不知道有任何 iPhone 或 iPad 屏幕支持 1Hz 刷新率。

在 SwiftUI 中优化屏幕刷新性能的最佳方法是不要使任何不必要的视图无效。操作系统将根据此调整刷新率。如果您使用 SwiftUI 并且不会不必要地使视图无效,那么我希望它在 ProMotion 手机上以 10Hz 运行。我相信我在非 ProMotion 设备上也看到过 10Hz,但距离我审核它已经有一段时间了。

如果您要进行自己的自定义渲染,则只需使用 CADisplayLink。如果可能的话,您应该避免这种情况,但是如果您需要的话,Apple 会为您提供工具。对于您的情况(纯 SwiftUI),整个答案是“不要比所需的频率更频繁地使您的视图无效”。您没有什么可以或应该做的。

© www.soinside.com 2019 - 2024. All rights reserved.