避免无关的图形和动画
如果你的应用程序只使用标准的窗口和控件,你可能不需要太担心无关的内容更新,因为系统api是为了最大限度地提高能效而设计的。但是,如果有自定义窗口和控件,请确保图形代码的执行效率高。您的应用程序不应该不必要地刷新内容,例如在屏幕上的模糊区域,或通过过度使用动画。
每次你的应用程序更新(或“绘制”)屏幕内容时,它都需要CPU、GPU和屏幕处于活动状态。无关或低效的绘图可以将系统资源从低功耗状态中拉出来,或阻止它们完全断电,从而导致大量的能源使用。
按照以下指导原则优化内容刷新
- 减少应用程序使用的视图数。
- 减少不透明度的使用,例如在显示半透明模糊的视图中。如果需要使用不透明度,请避免在经常更改的内容上使用它。否则,能量成本将被放大,因为无论何时内容更改,背景视图和半透明视图都必须更新。
- 当应用程序或其内容不可见时(例如当应用程序的内容被其他视图、剪辑或屏幕外遮挡时),请删除绘图。
- 尽可能对动画使用较低的帧速率。例如,在游戏过程中,高帧速率可能是有意义的,但是较低的帧速率对于菜单屏幕来说就足够了。仅当用户体验需要时才使用高帧速率。
- 执行动画时使用一致的帧速率。例如,如果应用程序每秒显示60帧,则在动画的整个生命周期中保持该帧速率。
- 避免在屏幕上同时使用多个帧速率。例如,游戏中没有角色以每秒60帧的速度移动,而天空中的云以每秒30帧的速度移动。对两者使用相同的帧速率,即使这意味着要提高其中一个帧速率。
开发游戏时使用推荐的框架。这些框架经过优化以提供卓越的性能和最佳的能效:
在二维游戏中使用SpriteKit。请参阅SpriteKit Programming Guide
和 SpriteKit Framework Reference.
。
使用SceneKit进行休闲3D游戏。请参见 Scene Kit Framework Reference
和场景工具包功能参考。
在高度沉浸式的游戏中使用金属。参见Metal Programming Guide, Metal Framework Reference
和《Metal功能参考》。
注意
有关实现windows和视图的指导原则,请参阅 View Programming Guide for iOS and View Controller Programming Guide for iOS.
播放全屏视频时限制用户界面
iOS经过优化,可以在播放全屏视频的同时有效地管理资源,从而节约能源。然而,在播放视频的上方或下方的附加UI层可以通过增加额外的资源(例如GPU)来降低这种优化
avplayervewcontroller类提供的标准视频控件集在媒体播放期间自动隐藏。应用程序应该避免在全屏视频上方添加额外的层(甚至是隐藏层),这是没有充分理由的。当用户通过点击等方式请求控件和其他UI元素时,在全屏视频上显示控件和其他UI元素是很好的和预期的行为。但是,当用户不与这些元素交互时,应该删除这些元素
网友评论