這是我2017年分享到朋友圈出來的第一篇文章,也是簡書第一篇文章.
總結2016,兩字經歷,遇到很多人,有離開的,有留下的,感謝這些同學朋友同事和經歷.即使是進醫院的時候我也覺得也挺好的,可能很掙扎,痛苦和鬧心,至少經歷了才會體會到點什麼,才能看明白些什麼,雖然現在還要吃藥休息,我覺得時間還是要花在有意義的事情上比較好吧,有些無關痛癢的事情也沒時間去想,我談不上情懷,但至少算是出於初衷和喜歡.未來的時間,只要我晚上有時間狀態不錯的時候,我就會把所見所學所悟整理成文字和demo分享給喜歡IOS技術的同學們.下面這篇文章我是結合我自己所見所學和微信裡好朋友的文字文章,感謝!下面入正題:
iOS系統的手機呈現內容到展示,需要先了解CPU和GPU,因為兩者的共同參與,我們才能看到APP的內容展示.CPU我們很好理解,但還是要說一下:CPU負責計算顯示內容,視圖的創建,布局的計算,圖片解碼,文本繪制都是通過CPU計算出來.那這個GPU是什麼?GPU負責把CPU計算出的結果變換合成渲染,然後呈遞給幀緩沖區,等待VSync信號到來,才會有我們看到APP的內容.所謂的頁面卡頓是因為垂直同步機制,在一個VSync時間內,CPU或者GPU沒有完成內容的提交,導致這一幀丟失了,而下一個VSync時間到來不會把上一幀所丟失的內容在做一遍,所以在下一個VSync時間的顯示之前,屏幕會保留之前的內容不變.
為了平衡CPU和GPU的負荷運算,不要在兩者任何一方做負荷運算
1.計算布局
2.對象創建
3.autolayout復雜的頁面會消耗CPU,增加負荷
4.文本計算:文本長寬高比如cell裡文本的計算
5.文本控件label,textField,textView,webView,其排版和繪制都是在主線程進行,當顯示大量文本時,會很大的消耗CPU.包含文本的視圖在改變布局時會觸發文本重新渲染,對於靜態文本我們應該要盡量減少它所在視圖的布局修改
6.圖像的繪制,圖像繪制我會在之後詳細講解動畫的分享文章中細說,CG開頭方法消耗CPU資源,我們可以將繪制過程放在後台線程,然後在主線程裡講結果設置到layer的contents中
6.圖片的解碼 imageNamed加載圖片後會立即解碼然後系統會緩存起來,有一個問題是我們不知道這個圖片何時會釋放掉,這個緩存策略沒有公開
GPU任務單一,接收提交紋理,點的描述,應用變換,渲染.大體上講CAlayer的屬性大多數都是GPU繪制.GPU之後我會具體用代碼補充進來看下效果,就很明顯了,先說大概幾點:
避免GPU負荷的幾點:
1.不要有大量的幾何結構,減少在短時間大量圖片的顯示
2.避免視圖的混合,減少透明的視圖
3.不要離屏渲染,不要在當前屏幕緩沖區以外開辟的一個緩沖區進行渲染和操作.
相關理論知識,大家可能都有了解,我只是進行總結了下,之後我有時間會盡量完善,在每一個點後面寫個demo和鏈接供大家下載和探討,也會分享出更多的文章包括我自己寫的一套架子和一些實用的工具類,自己總結和所見所學所悟,不對的地方希望各路大牛們指點.有病在身先行休息,最後感謝所有朋友,謝謝.
以上就是iOS頁面圖層性能和頁面卡頓的原因的全文介紹,希望對您學習和使用ios應用開發有所幫助.【iOS頁面圖層性能和頁面卡頓的原因】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!