現(xiàn)在對(duì)于iOS開發(fā)者來說越來越注重App的性能優(yōu)化的問題叹坦,而表格視圖是App中經(jīng)常使用的UI控件,表格視圖的卡頓會(huì)大大的降低用戶體驗(yàn)卑雁。
1.查看是否需要優(yōu)化
真機(jī)運(yùn)行程序募书,使用instructment中的Core Animation工具查看。左邊一欄的 數(shù)值范圍為0~60序厉,幀數(shù)越高越好,如果滑動(dòng)的幀數(shù)普遍在50+以上毕箍,可以暫時(shí)不用優(yōu)化弛房。如果幀數(shù)普遍在30,40而柑,此時(shí)視圖會(huì)出現(xiàn)卡頓文捶,必須進(jìn)行優(yōu)化。
2.優(yōu)化的方法(重要性從上到下依次降低)
2.1 行高
行高一定要緩存媒咳!緩存行高是解決性能問題的最佳途徑粹排。當(dāng)然,如果當(dāng)前表格的刷新幀數(shù)很高涩澡,也可以不緩存行高顽耳。
2.2 提前計(jì)算
盡量少計(jì)算,所需要的數(shù)據(jù)提前計(jì)算好
2.3 圓角
控件上不要設(shè)置圓角半徑妙同,以及所有圖片的渲染屬性
2.4 創(chuàng)建控件
不要?jiǎng)討B(tài)的創(chuàng)建控件射富,所有需要的控件需要提前創(chuàng)建好场靴。在顯示的時(shí)候煤禽,根據(jù)需要,顯示或者隱藏
2.5 cell的層級(jí)結(jié)構(gòu)
Cell中控件的層次結(jié)構(gòu)越少越好隔躲,數(shù)量也越少越好
3.高級(jí)優(yōu)化
注意: 幀數(shù)大于50+芒涡,不需要進(jìn)行高級(jí)優(yōu)化柴灯。離屛渲染需要 CPU與GPU來回的切換,耗電會(huì)比較的厲害
優(yōu)化方法: 離屛渲染+柵格化:
異步繪制后费尽,會(huì)生成一張獨(dú)立的圖片赠群,當(dāng)表格視圖再進(jìn)行滾動(dòng)時(shí)候,展示的是生成的圖片旱幼,停止?jié)L動(dòng)之后乎串,可以接收監(jiān)聽
__離屛渲染 __
self.layer.drawsAsynchronously = true
柵格化
self.layer.shouldRasterize = true
self.layer.rasterizationScale = UIScreen.main.scale