UITableView效能優化的幾點建議

CuiXg發表於2020-10-17

TableView是App裡最常用的一個UI控制元件了,優化TableView效能,使我們提高使用者體驗必須要考慮的問題。

  1. 提前計算並快取好高度,因為heightForRow最頻繁的呼叫。
    - (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath;

  2. 非同步繪製,遇到複雜介面,效能瓶頸時,可能是突破口。

  3. 滑動時按需載入,這個在大量圖片展示,網路載入時,很管用。(SDWebImage已經實現非同步載入)。

  4. 重用cells。

  5. 如果cell內顯示得內容來自web,使用非同步載入,快取結果請求。當cell中的部分View是非常獨立的,並且不便於重用的,而且“體積”非常小,在記憶體可控的前提下,我們完全可以將這些view快取起來。當然也是快取在模型中。

  6. 少用或不用透明圖層,使用不透明檢視。對於不透明的View,設定opaque為YES,這樣在繪製該View時,就不需要考慮被View覆蓋的其他內容(儘量設定Cell的view為opaque,避免GPU對Cell下面的內容也進行繪製)

  7. 減少subViews。分析Cell結構,儘可能的將 相同內容的抽取到一種樣式Cell中,前面已經提到了Cell的重用機制,這樣就能保證UITbaleView要顯示多少內容,真正建立出的Cell可能只比螢幕顯示的Cell多一點。雖然Cell的’體積’可能會大點,但是因為Cell的數量不會很多,完全可以接受的

  8. 少用addView給cell動態新增view,可以初始化的時候就新增,然後通過hide控制是否顯示。只定義一種Cell,那該如何顯示不同型別的內容呢?答案就是,把所有不同型別的view都定義好,放在cell裡面,通過hidden顯示、隱藏,來顯示不同型別的內容。畢竟,在使用者快速滑動中,只是單純的顯示、隱藏subview比實時建立要快得多

相關文章