現在對于iOS開發者來說越來越注重App的性能優化的問題,而表格視圖是App中經常使用的UI控件,表格視圖的卡頓會大大的降低用戶體驗。
1.查看是否需要優化
真機運行程序,使用instructment中的Core Animation工具查看。左邊一欄的 數值范圍為0~60,幀數越高越好,如果滑動的幀數普遍在50+以上,可以暫時不用優化。如果幀數普遍在30,40,此時視圖會出現卡頓,必須進行優化。
2.優化的方法(重要性從上到下依次降低)
2.1 行高
行高一定要緩存!緩存行高是解決性能問題的最佳途徑。當然,如果當前表格的刷新幀數很高,也可以不緩存行高。
2.2 提前計算
盡量少計算,所需要的數據提前計算好
2.3 圓角
控件上不要設置圓角半徑,以及所有圖片的渲染屬性
2.4 創建控件
不要動態的創建控件,所有需要的控件需要提前創建好。在顯示的時候,根據需要,顯示或者隱藏
2.5 cell的層級結構
Cell中控件的層次結構越少越好,數量也越少越好
3.高級優化
注意: 幀數大于50+,不需要進行高級優化。離屛渲染需要 CPU與GPU來回的切換,耗電會比較的厲害
優化方法: 離屛渲染+柵格化:
異步繪制后,會生成一張獨立的圖片,當表格視圖再進行滾動時候,展示的是生成的圖片,停止滾動之后,可以接收監聽
__離屛渲染 __
self.layer.drawsAsynchronously = true
柵格化
self.layer.shouldRasterize = true
self.layer.rasterizationScale = UIScreen.main.scale