ui渲染的簡單過程:
渲染時機:
core animation 在 runloop 中註冊了乙個 observer 監聽 beforewaiting(即將進入休眠) 和 exit (即將退出loop) 事件 。當在操作 ui 時,比如改變了 frame、更新了 uiview/calayer 的層次時,或者手動呼叫了 uiview/calayer 的 setneedslayout/setneedsdisplay方法後,這個 uiview/calayer 就被標記為待處理,並被提交到乙個全域性的容器去。當oberver監聽的事件到來時,**執行函式中會遍歷所有待處理的uiview/calayer 以執行實際的繪製和調整,並更新 ui 介面。
ui優化方案:
1 效能敏感介面,少用storyboard
2 物件盡可能復用,減少物件建立,釋放的次數
3 對view應該儘量減少不必要的屬性修改。應該盡量避免調整檢視層次、新增和移除檢視。可以通過隱藏,顯示來控制
4 布局方面:盡量提前計算好布局,在需要時一次性調整好對應屬性,而不要多次、頻繁的計算和調整這些屬性。
5 autolayout 對於複雜檢視來說常常會產生嚴重的效能問題。隨著檢視數量的增長,autolayout 帶來的 cpu 消耗會呈指數級上公升
6 儘量減少在短時間內大量的顯示,盡可能將多張合成為一張進行顯示。
7 應用應當儘量減少檢視數量和層次,也可以用上面的方法,把多個檢視預先渲染為一張來顯示。
8 calayer 的 border、圓角、陰影、遮罩(mask),casharplayer 的向量圖形顯示,通常會觸發離屏渲染(offscreen rendering),而離屏渲染通常發生在 gpu 中。避免使用圓角、陰影、遮罩等屬性。
簡單筆記(四)
第二章 型別 運算子與表示式 10.11.25 2.1 變數名 對變數與符號常量的名字存在著一些限制。名字有字幕 與數字組成,但其第乙個字元必須為字母。下劃線 也 被看做是字母,它有時可用於命名比較長的變數以提高 可讀性。由於庫函式通常使用下劃線開頭的名字,因此 不要將這類名字用作變數名。大寫字母與...
UIApplication 簡單筆記
如何取得?很簡單 copy 下面的 code 就好,不會有第二種寫法,也完全不用考量什麼 記憶體管理。2 push notification iphone 3.0 新增的功能,用來唬爛可以滿足部分多工需求的功能。好啦,是真的還不錯 是的!搖晃時 undo 我們都知道 iphone 可以知道自己在旋轉...
LBFGS 簡單筆記
52nlp上無約術最優化的文章 後面提到了乙個無約束最優化的c 實現 sample lbfgs.c lm 計算原函式和梯度fx g d g 計算xnorm,gnorm 判定gnorm xnorm 是否滿足條件 計算step 1 sqrt d d k 1,end 0 進入for迴圈 計算xnorm,g...