美文网首页
uitableview性能优化

uitableview性能优化

作者: 6灰太狼9 | 来源:发表于2017-03-30 11:28 被阅读11次

    -(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性能优化

          本文链接:https://www.haomeiwen.com/subject/fzvuottx.html