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條,供大家參考