iOS UI效能優化篇

2021-09-09 07:08:33 字數 1158 閱讀 3224

列表元素高度動態計算會增加cpu消耗,可以進行快取,減少計算量

列表元素中的固定使用imagebyname獲取,系統會自動在記憶體中進行快取。

減少列表元素的個數和層級,複雜ui可以考慮通過coregraphics繪製

減少透明view多層級使用,多個層級的透明view渲染會增加cpu消耗。

離屏渲染需要開闢乙個新的快取區進行渲染操作,然後進行上下文切換,將從當前螢幕切換到離屏,等離屏渲染結束後,再將快取區的資料顯示到當前螢幕,這又是一次上下文切換。

離屏渲染的快取區是有限的,大約為螢幕畫素的兩倍大小。

離屏渲染的快取在未使用超過100ms後會被**。

會觸發離屏渲染的有:

光柵化(layer.shouldrasterize )

光柵化後的內容,在對應layer及其sublayers沒有發生變化的情況下,不會再重新渲染。

開啟後,記得設定cell.layer.rasterizationscale = [[uiscreen mainscreen] scale];

遮罩mask(layout.maskstobounds)

layer.cornerradius,layer.borderwidth,layer.bordercolor不會引起離屏渲染。

layer.cornerradius和layout.maskstobounds組合使用,會產生離屏渲染。

shadow(陰影,layout.shadow)

edgeantialiasing(抗鋸齒)

對效能影響不大

groupopacity(透明度)

只要父層的alpha設定為1,則不會觸發離屏渲染。比如列表中,cell.contentview.alpha = 1

對效能影響不大

core text繪製(cpu渲染後再傳入快取區)漸變

使用建議:

盡量只用在需要重複使用的點陣圖上,比如某個位圖需要在動畫中被重複使用,這個時候應當開啟shouldrasterize進行光柵化。

盡量使用當前螢幕渲染。

雖然gpu的浮點運算比cpu強,cpu的渲染效率是不如離屏渲染的,但如果只是簡單的效果,直接使用cpu渲染效果可能比離屏渲染的開銷更小。

出現效能問題後先檢視是cpu瓶頸還是gpu瓶頸,再決定用什麼方案。

使用cashapelayer來製作圓角遮罩的方式,代替直接設定圓角。

效能優化篇

一 在使用gallery控制項時,如果載入的過多,過大,就很容易出現outofmemoryerror異常,就是記憶體溢位。這是因為android預設分配的記憶體只有幾m,而載入的如果是jpg之類的壓縮格式,在記憶體中展開時就會占用大量的空間,也就容易記憶體溢位。這時可以用下面的方法解決 view p...

效能優化篇

效能優化 1.首先說出效能優化的點 2.在說到ssr的時候以及節流防抖的時候 ssr為什麼能減少白屏事件 目前前後端的分離的前端專案需要先載入靜態資源,再非同步獲取資料,最後渲染頁面,在這個過程中的前兩部頁面都是沒有資料的,影響了首屏的渲染速度,也就影響了使用者的體驗 nuxt.js的概念 節流防抖...

效能測試之效能優化篇

系統上線必會經歷測試階段,功能測試我們可以按照產品的設計原型去執行一條條測試用例來覆蓋產品功能點。但是在功能測試之外,如果乙個使用者介面層服務,我們還需要知道服務的效能指標以了解並評估這個服務在實際的生產環境中可以應對多大壓力,我們可以根據這個資料情況根據不用的場景時間去對應的增加機器節點或進行重構...