uitableview性能优化

-(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空间的大小符合。服务器下发的图片和实际的尺寸不一致,不得不去手动改尺寸,而重新计算尺寸就是有影响性能的。

你可能感兴趣的:(uitableview性能优化)