使用不透明檢視。
不透明的檢視可以極大地提高渲染的速度。因此如非必要,可以將table cell及其子檢視的opaque屬性設為yes(預設值)。
其中的特例包括背景色,它的alpha值應該為1(例如不要使用clearcolor);影象的alpha值也應該為1,或者在畫圖時設為不透明。
不要重複建立不必要的table cell。
前面說了,uitableview只需要一螢幕的uitableviewcell物件即可。因此在cell不可見時,可以將其快取起來,而在需要時繼續使用它即可。
而uitableview也提供了這種機制,只需要簡單地設定乙個identifier即可:
static nsstring *cellidentifier = @"***";
uitableviewcell *cell = [tableview dequeuereusablecellwithidentifier:cellidentifier];
if (cell == nil)
- (void)tableview:(uitableview *)tableview willdisplaycell:(uitableviewcell *)cell forrowatindexpath:(nsindexpath *)indexpath
}// update方法獲取到結果後,設定updating為no
nsarray *indexpaths = [self.tableview indexpathsforvisiblerows];
for (nsindexpath *visibleindexpath in indexpaths)
}// 也可不遍歷,直接與頭尾相比較,看是否在中間即可。
最後還是前面所說過的insertrowsatindexpaths:withrowanimation:方法,插入新行需要在主線程執行,而一次插入很多行的話(例如50行),會長時間阻塞主線程。而換成reloaddata方法的話,瞬間就處理完了。
就說那麼多吧,我想做到這些也就差不多了,其他就需要自行profile,找出瓶頸來優化了。
UITableView效能優化
uitableview效能優化 一直以來uitableview效能一直是個很嚴重的問題,uitableview效能優化的幾個關鍵點如下 1,盡量使用不透明的檢視。2,重用uitableviewcell。3,減少子檢視數量,自定義uitableviewcell,並在其drawrect 中自行繪製 更好...
UITableView效能優化
1.原理 uitableview是uiscrollview的子類,因此它可以自動響應滾動事件 一般為上下滾動 它內部包含0到多個uitableviewcell物件,每個table cell展示各自的內容。當新cell需要被顯示時,就會呼叫tableview cellforrowatindexpath...
UITableView優化技巧5
上篇我們講到了tableview是繼承自scrollview,假如cell中有比較多的需要通過網路載入,這時候我們可以利用scrollview的 來進行網路請求的時機選擇從而減小網路開銷和效能損耗。這是看了一篇關於uiscrollview 實踐經驗後得到的啟發。首先我們得了解scrollview的幾...