卡頓解決的主要思路:盡可能減少CPU、GPU資源消耗
一、卡頓 ------> CPU
?CPU:(中央處理器)對象的創(chuàng)建和銷毀,對象屬性的調(diào)整、布局計算、文本的計算和排版、圖片的格式轉(zhuǎn)換和解碼、圖像的繪制
1.盡量使用輕量級對象,比如用不到事件處理的地方,可以考慮使用CALayer (例:UILabel文字只展示,沒有事件處理 就用CALayer)
2.不要頻繁調(diào)用UIView的相關(guān)屬性,比如frame、bounds、transform等屬性,盡量減少不必要的修改
3.盡量提前計算好布局,在有需要時一次性調(diào)整對應(yīng)的屬性,不要多次修改屬性
4.Autolayout 會比直接設(shè)置frame消耗更多的CPU資源
5.圖片的size最好和UIImageView的size保持一致
6.控制一下線程的最大并發(fā)數(shù)
7.盡量把耗時傳操作放到子線程(例:文本處理(尺寸計算、繪制)、圖像的解碼、繪制)
二、卡頓 ------> GPU
?GPU:(圖形處理器)紋理的渲染
1.盡量避免短時間內(nèi)大量圖片的展示,盡可能將多張圖片合成一張進行顯示
2.GPU能處理的最大紋理尺寸是4096*4096,一旦超過這個尺寸,就會占用CPU資源進行處理,所以紋理盡量不要超過這個尺寸
3.盡量減少視圖數(shù)量和層次
4.減少透明視圖(alpha<1),不透明的就設(shè)置opaque為YES
5.盡量避免出現(xiàn)離屏渲染(在當(dāng)前屏幕緩沖區(qū)以外新開辟一個緩沖區(qū)進行操作)