標籤:
UITableView效能最佳化技巧
Table view需要有很好的滾動效能,不然使用者會在滾動過程中發現動畫的瑕疵。
為了保證table view平滑滾動,確保你採取了以下的措施:
- 正確使用`reuseIdentifier`來重用cells
- 盡量使所有的view opaque,包括cell自身
- 避免漸層,圖片縮放,後台選人
- 緩衝行高
- 如果cell內現實的內容來自web,使用非同步載入,緩衝請求結果
- 使用`shadowPath`來畫陰影
- 減少subviews的數量
- 盡量不適用`cellForRowAtIndexPath:`,如果你需要用到它,只用一次然後緩衝結果
- 使用正確的資料結構來儲存資料
- 使用`rowHeight`, `sectionFooterHeight` 和 `sectionHeaderHeight`來設定固定的高,不要請求delegate
如果不重用cell時,每當一個cell顯示到螢幕上時,就會重新建立一個新的cell
如果有很多資料的時候,就會堆積很多cell。如果重用cell,為cell建立一個ID
每當需要顯示cell 的時候,都會先去緩衝池中尋找可迴圈利用的cell,如果沒有再重新建立cell
2.避免cell的重新布局
cell的布局填充等操作 比較耗時,一般建立時就布局好
如可以將cell單獨放到一個自訂類,初始化時就布局好
3.提前計算並緩衝cell的屬性及內容
當我們建立cell的資料來源方法時,編譯器並不是先建立cell 再定cell的高度
而是先根據內容一次確定每一個cell的高度,高度確定後,再建立要顯示的cell,滾動時,每當cell進入憑虛都會計算高度,提前估算高度告訴編譯器,編譯器知道高度後,緊接著就會建立cell,這時再調用高度的具體計算方法,這樣可以方式浪費時間去計算顯示以外的cell
4.減少cell中控制項的數量
盡量使cell得布局大致相同,不同風格的cell可以使用不用的重用標識符,初始化時添加控制項,
不適用的可以先隱藏
5.不要使用ClearColor,無背景色,透明度也不要設定為0
渲染耗時比較長
6.使用局部更新
如果只是更新某組的話,使用reloadSection進行局部更新
7.載入網路資料,下載圖片,使用非同步載入,並緩衝
8.少使用addView 給cell動態添加view
9.按需載入cell,cell滾動很快時,只載入範圍內的cell
10.不要實現無用的代理方法,tableView只遵守兩個協議
著作權聲明:歡迎轉載,請貼上源地址: http://www.cnblogs.com/iCocos/(iOS夢工廠)
更多精彩請關注github:https://github.com/al1020119?tab=repositories
iOS開發——實戰項目總結&UITableView效能最佳化技巧