UITableView優(yōu)化方法

TableView是iOS開發(fā)中比較常用的控件,熟悉優(yōu)化TableView的方法,對今后的開發(fā)iOS很有幫助。

下面一一介紹一下UITableView的優(yōu)化方法:

1 、若高度一定,直接使用rowHeight屬性而不是使用heightForRowAtIndexPath方法,以減少調(diào)用的消耗。若高度是不固定的,heightForRowAtIndexPath所計算的高度應(yīng)該緩存起來,每次數(shù)據(jù)源發(fā)生變化時,比如刪除、插入、更新行都會重新請求所有的高度。若有100行,就會有100 次調(diào)用,因為將高度緩存起來是硬骨的。同理,heightForHeaderInSection、heightForFoorerInSection也應(yīng)該緩存起來。

2、不要在tableView:cellForRowAtIndexPath:中做太多的計算和IO操作,比如可以將需要的計算提前計算好,IO操作也提前計算好,它應(yīng)該直接調(diào)用來顯示就可以。

3、將計算行高的時間提親到從服務(wù)器獲取數(shù)據(jù)的時間,計算完了高度一并寫回數(shù)據(jù)庫或者通過轉(zhuǎn)型model,將高度放到模型中,但是,最好將高度緩存起來,若一個model的數(shù)據(jù)有不同的狀態(tài),比如展開與收起狀態(tài),應(yīng)該也將高度緩存起來。注意使用異步去計算,計算完成后再回到主線程顯示。

4、在設(shè)置顯示圖片時,不要直接設(shè)置UIImageView的contentModel屬性自動適應(yīng),圖片變形會計算transform,壓縮時會乘以一個矩陣,消耗性能。對于要求性能較高的app,應(yīng)該將得到的圖片經(jīng)過處理成UIImageView大小后再呈現(xiàn)。

5、不要將視圖的opaque屬性設(shè)置為NO, 默認為YES,它表示不透明度。當opaque為NO的時候,圖層的半透明取決于圖層和其本身合成的圖層為結(jié)果。

6、layer添加圓角是比較耗時的,這樣會離屏渲染,需要犧牲更多的性能,比如,圖片顯示圓角時,可以通過core Graphic來生成帶圓角的圖片等

7、手動繪制cell,繪制cell不建議使用CALayer,UIView的繪制是建立在Core Graphic上的,其使用的是CPU。CALayer使用的是Core Animation, CPU、GPU都可以使用且由系統(tǒng)自動決定使用哪一個,UIView的繪制,使用的是自下而上的一層一層的繪制,而后渲染。Layer處理的是紋理,利用GPU的Texture Cache和獨立的浮點數(shù)計算單元可以加速紋理的處理

8、重用cell, 防止重復(fù)的繪制,減少渲染次數(shù),可提高性能。

9、減少subviews的數(shù)量,盡量放在同一層view上顯示。

10、盡量少動態(tài)給cell添加子view。用addViewCell動態(tài)添加View,可以初始化時添加,然后通過hide來控制是否顯示。

ok,總結(jié)加上參考其他博客,列出了這10條,供大家參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容