有效地使用圖形動畫和視頻

避免無關(guān)的圖形和動畫

如果你的應(yīng)用程序只使用標準的窗口和控件,你可能不需要太擔(dān)心無關(guān)的內(nèi)容更新,因為系統(tǒng)api是為了最大限度地提高能效而設(shè)計的。但是,如果有自定義窗口和控件,請確保圖形代碼的執(zhí)行效率高。您的應(yīng)用程序不應(yīng)該不必要地刷新內(nèi)容,例如在屏幕上的模糊區(qū)域,或通過過度使用動畫。
每次你的應(yīng)用程序更新(或“繪制”)屏幕內(nèi)容時,它都需要CPU、GPU和屏幕處于活動狀態(tài)。無關(guān)或低效的繪圖可以將系統(tǒng)資源從低功耗狀態(tài)中拉出來,或阻止它們完全斷電,從而導(dǎo)致大量的能源使用。

按照以下指導(dǎo)原則優(yōu)化內(nèi)容刷新

  • 減少應(yīng)用程序使用的視圖數(shù)。
  • 減少不透明度的使用,例如在顯示半透明模糊的視圖中。如果需要使用不透明度,請避免在經(jīng)常更改的內(nèi)容上使用它。否則,能量成本將被放大,因為無論何時內(nèi)容更改,背景視圖和半透明視圖都必須更新。
  • 當(dāng)應(yīng)用程序或其內(nèi)容不可見時(例如當(dāng)應(yīng)用程序的內(nèi)容被其他視圖、剪輯或屏幕外遮擋時),請刪除繪圖。
  • 盡可能對動畫使用較低的幀速率。例如,在游戲過程中,高幀速率可能是有意義的,但是較低的幀速率對于菜單屏幕來說就足夠了。僅當(dāng)用戶體驗需要時才使用高幀速率。
  • 執(zhí)行動畫時使用一致的幀速率。例如,如果應(yīng)用程序每秒顯示60幀,則在動畫的整個生命周期中保持該幀速率。
  • 避免在屏幕上同時使用多個幀速率。例如,游戲中沒有角色以每秒60幀的速度移動,而天空中的云以每秒30幀的速度移動。對兩者使用相同的幀速率,即使這意味著要提高其中一個幀速率。
    開發(fā)游戲時使用推薦的框架。這些框架經(jīng)過優(yōu)化以提供卓越的性能和最佳的能效:
    在二維游戲中使用SpriteKit。請參閱SpriteKit Programming Guide
    SpriteKit Framework Reference.
    。
    使用SceneKit進行休閑3D游戲。請參見 Scene Kit Framework Reference
    和場景工具包功能參考。
    在高度沉浸式的游戲中使用金屬。參見Metal Programming Guide, Metal Framework Reference
    和《Metal功能參考》。
    注意

有關(guān)實現(xiàn)windows和視圖的指導(dǎo)原則,請參閱 View Programming Guide for iOS and View Controller Programming Guide for iOS.

播放全屏視頻時限制用戶界面

iOS經(jīng)過優(yōu)化,可以在播放全屏視頻的同時有效地管理資源,從而節(jié)約能源。然而,在播放視頻的上方或下方的附加UI層可以通過增加額外的資源(例如GPU)來降低這種優(yōu)化
avplayervewcontroller類提供的標準視頻控件集在媒體播放期間自動隱藏。應(yīng)用程序應(yīng)該避免在全屏視頻上方添加額外的層(甚至是隱藏層),這是沒有充分理由的。當(dāng)用戶通過點擊等方式請求控件和其他UI元素時,在全屏視頻上顯示控件和其他UI元素是很好的和預(yù)期的行為。但是,當(dāng)用戶不與這些元素交互時,應(yīng)該刪除這些元素

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容