iOS效能優化基礎篇(0)

2021-07-24 23:47:18 字數 1259 閱讀 6397

ios效能優化分析

首先要熟悉幾個概念

png 和 jpg 的區別是什麼?

png格式的有alpha通道,jpeg則沒有。png無失真壓縮,jpeg允許你選擇0-100%的壓縮質量。如果需要alpha通道(透明),就只能用png格式.

cpu 和 gpu

如果想看看兩者的區別,先得了解ios檢視背後的層級結構原理  上圖中的最底下一行是硬體層,由gpu和cpu組成。 我們經常說到的硬體加速其實是指opengl,core animation/uikit基於gpu之上對計算機圖形合成以及繪製的實現,直到目前為止,ios上的硬體加速能力還是大大領先與android,後者由於依賴cpu的繪製,絕大多數的動畫實現都會讓人感覺明顯的卡頓。

ios檢視渲染架構和原理

uiview類的許多基礎行為嚴重依賴於另外乙個2. 物件。 uikit每個檢視物件的背後都有乙個coreanimation層物件,它是乙個calayer類的例項,該類為檢視內容的渲染,布局,合成以及動畫提供基礎性的支援

和mac os不同的是, ios將coreanimation整合到檢視渲染實現的核心。 由於sdk中uikit提供了透明的介面,開發者大部分情況下,不必去關心和直接訪問coreanimation。 但是如果要實現特別複雜的渲染和動畫,就需要使用到coreanimation的介面支援了

如何優化檢視載入速度

離屏繪製(offscreen drawing)

離屏繪製(offscreen drawing)的話就是指gpu一邊在當前螢幕上進行繪製,而另一邊在螢幕還沒有處理影象資訊之前通過cpu來生成影象資訊的處理過程 在ios當中,離屏繪製在以下的情況下會自動觸發:

[html]view plain

copy

1.core graphics(任何以cg開頭的類)  

2.在drawrect方法裡,甚至是空方法實現  

3.所有shouldrasterize屬性是yes的calayers物件    

4.所有用了masks(setmaskstobounds)和動態陰影的(setshadow*)的calayers物件  

5.所有文字的繪製,包括coretext  

6.group opacity(uiviewgroupopacity)  

iOS效能優化UI篇(一)

這是乙個老生常談的話題,程式猿的一生除了在編譯 寫bug 改bug,就是在不斷地重構優化,優化的點也多種多樣,其中最直觀有效的就是ui部分的優化了,這方面有很多相關資料,也有如yykit texture這種神級框架從根源上解決了卡頓的問題。作為菜鳥的我無法像大佬們一樣從根源上分析解決ui效能問題,只...

iOS面試題 效能優化篇

降低包大小需要從兩方面著手 1 模擬器debug中color blended layers紅色區域表示圖層發生了混合 2 instrument 選中core animation 勾選color blended layers 避免圖層混合 uilabel圖層混合解決方法 ios8以後設定背景色為非透明...

效能優化篇

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