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...