-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
//1.栅格化,美工的术语:将cell中的所有内容,生成一张独立的图像
//在屏幕滚动的时候,只显示图像
self.layer.shouldRasterize = YES;
//栅格化,必须制定分辨率,否则默认使用*1生成图像
self.layer.rasterizationScale = [UIScreen mainScreen].scale;
//2.异步绘制,如果cell比较复杂,可以使用
self.layer.drawsAsynchronously = YES;
}
return self;
}
这里处理后可以添加uitableview滚动的流畅性
其他的优化uitableView的注意点
1.行高要缓存
2.不要动态创建子视图 所以子视图需要预先创建 如果不需要显示设置hidden
3.所有子视图都要添加到containview上
4.所有子视图都要设置背景颜色
5.所有颜色不要设置alpha
6.cell栅格化和异步绘制
7.cell复用
8.图片异步加载,图片显示在屏幕上才加载,滑动时不设置图片(Runloop) (具体参考SDWebImage) 图片异步下载完成后,如果在滑动的时候设置到UIImageView上,会出现卡顿,所以要做到流畅的滑动,可以在滑动停止后设置。这里就可以用到Runloop了,当UIScrollView滑动时,runloop会切换到UITrackingRunloopMode,UIScrollView停止后会切换到NSDefaultRunloopMode所以,可以将设置图片的动作放在主线程的NSDefaultRunloopMode里
9.设置圆角。其实单纯的设置圆角很简单,它不会带来任何性能损耗。view.layer.cornerRadius = 10.0f;因为在默认情况下,这个属性只会影响视图的背景颜色和 border。而是我们加上label.layer.cornerRadius = 10.0f;label.layer.masksToBounds = true;就会离屏渲染
10.尽量将图片的大小和UI空间的大小符合。服务器下发的图片和实际的尺寸不一致,不得不去手动改尺寸,而重新计算尺寸就是有影响性能的。