iOS效能優化UI篇(一)

2021-10-25 07:26:51 字數 1271 閱讀 9055

這是乙個老生常談的話題,程式猿的一生除了在編譯、寫bug、改bug,就是在不斷地重構優化,優化的點也多種多樣,其中最直觀有效的就是ui部分的優化了,這方面有很多相關資料,也有如yykit、texture這種神級框架從根源上解決了卡頓的問題。作為菜鳥的我無法像大佬們一樣從根源上分析解決ui效能問題,只能寫一篇比較基礎的文章,總結一下常用的控制項的使用注意點,希望對你的日常開發有幫助~

先來一波ui操作的基本法則:

聊完基本法,我們來聊一下幾個常見檢視,看看有哪些效能小技巧。

uilabel

這絕對是你用的最多的控制項,看似簡單,但你真的了解它的效能消耗點嗎?先來看看他有多複雜。

圖中的每一項設定都會增加uilabel的渲染代價,具體步驟如下:

1.使用字型樣式及要被渲染的文字時,計算需要的畫素數,這是乙個消耗較大的過程,應盡量少做。

2.檢查要被渲染的寬度。

3.檢查numberoflines,計算將要展示的行數。

4.sizetofit是否被呼叫,呼叫則計算高度,未呼叫則檢查當前尺寸是否能展示完整內容。

5.如果size不夠展示,則使用linebreakmode確定隱藏或截斷的位置。

6.檢查其他配置選項,如純文字or富文字,富文字的樣式,對齊方式,自動收縮等。

7.最後使用字型、型別及顏色等渲染最終顯示的文字。

整個過程下來的渲染代價不容小覷,所以平時使用要避免一些不必要的效能浪費。

ps:有時會發現label的文字變模糊,那麼你需要檢查一下label的frame是否都為整數。

uibutton

按鈕同樣無處不在,樣式多變、功能強大的它渲染方式主要有以下四種:

渲染方式

優點缺點

自定義文字

簡單易用

樣式單一

全尺寸資源

可自定義背景圖 

樣式多變 

可實現a/b測試

導致ipa包變大

可變尺寸資源

ipa包大小增量較全尺寸小

資源的任何更改可能都會重新計算uiedgeinsets

自定義繪製

高度自定義樣式

隨著迭代**回越發臃腫

通過上面的比較,你需要權衡一下利弊,到底是要效能能還是要ipa包保持合適的大小。

uiimageview

影象的使用也很簡單,但在渲染代價較大的ui元素中,影象首屈一指。在使用uiimage、uiimageview時,注意以下幾點有助於效能提公升:

UI 介面效能優化(一)

人類大腦與眼睛對乙個畫面的連貫 知其實是有乙個界限的,譬如我們看電影會覺得畫面很自然連貫,其幀率通常為 24fps 那麼,用手機當然也需要感知螢幕操作的連貫性 尤其是動畫過渡 所以在手機領域 android ios 索性就把達到這種流暢的幀率規定為 60fps。盡量保證每幀在 16ms 內處理完所有...

iOS效能優化基礎篇(0)

ios效能優化分析 首先要熟悉幾個概念 png 和 jpg 的區別是什麼?png格式的有alpha通道,jpeg則沒有。png無失真壓縮,jpeg允許你選擇0 100 的壓縮質量。如果需要alpha通道 透明 就只能用png格式.cpu 和 gpu 如果想看看兩者的區別,先得了解ios檢視背後的層級...

iOS面試題 效能優化篇

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