UITableView優(yōu)化方法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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