-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
//1.柵格化,美工的術(shù)語:將cell中的所有內(nèi)容,生成一張獨立的圖像
//在屏幕滾動的時候,只顯示圖像
self.layer.shouldRasterize = YES;
//柵格化,必須制定分辨率,否則默認(rèn)使用*1生成圖像
self.layer.rasterizationScale = [UIScreen mainScreen].scale;
//2.異步繪制,如果cell比較復(fù)雜,可以使用
self.layer.drawsAsynchronously = YES;
}
return self;
}
這里處理后可以添加uitableview滾動的流暢性
其他的優(yōu)化uitableView的注意點
1.行高要緩存
2.不要動態(tài)創(chuàng)建子視圖? 所以子視圖需要預(yù)先創(chuàng)建? 如果不需要顯示設(shè)置hidden
3.所有子視圖都要添加到containview上
4.所有子視圖都要設(shè)置背景顏色
5.所有顏色不要設(shè)置alpha
6.cell柵格化和異步繪制
7.cell復(fù)用
8.圖片異步加載,圖片顯示在屏幕上才加載,滑動時不設(shè)置圖片(Runloop) ?(具體參考SDWebImage) ? ? ? ?圖片異步下載完成后,如果在滑動的時候設(shè)置到UIImageView上,會出現(xiàn)卡頓,所以要做到流暢的滑動,可以在滑動停止后設(shè)置。這里就可以用到Runloop了,當(dāng)UIScrollView滑動時,runloop會切換到UITrackingRunloopMode,UIScrollView停止后會切換到NSDefaultRunloopMode所以,可以將設(shè)置圖片的動作放在主線程的NSDefaultRunloopMode里
9.設(shè)置圓角。其實單純的設(shè)置圓角很簡單,它不會帶來任何性能損耗。view.layer.cornerRadius = 10.0f;因為在默認(rèn)情況下,這個屬性只會影響視圖的背景顏色和 border。而是我們加上label.layer.cornerRadius = 10.0f;label.layer.masksToBounds = true;就會離屏渲染
10.盡量將圖片的大小和UI空間的大小符合。服務(wù)器下發(fā)的圖片和實際的尺寸不一致,不得不去手動改尺寸,而重新計算尺寸就是有影響性能的。