UITableView性能优化

2020-04-27  本文已影响0人  zhouluyao
优化一、Cell重用
优化二、预先计算并缓存行高

TableView会先通过预估高度处理全部数据,可以先给TableView高度设置一个粗略的行高,cell创建之后再去获取真实的高度,而且只处理屏幕能看到的cell,显著提高加载的性能

优化三、减少Subviews层级、异步绘制、使用hidden隐藏图层

1、View的层级越复杂,对性能影响越大,尽量减少cell上View的层级

2、图片异步加载并及时释放内存,cell类中添加图片尽量避免使用imageWithName:方法,该方法会将图片缓存到内存中,应该使用imageWithContensOfFile:方法替换,该方法在图片使用后系统会自动释放资源.

imageWithContentsOfFile::不会将图片缓存起来,使用场景是不需要重用,加载很多的图片并且使用一次.

3、避免动态添加图层,在初始化cell的时候,图层要预先创建好,通过hidden去显示隐藏

4、圆角的优化,可以通过贝塞尔曲线+coreGraphics,或者贝塞尔曲线+CAShapeLayer设置圆角

5、图片阴影可以使用shadowPath避免离屏渲染

优化四、分页加载数据,预先异步请求数据
优化五、快速滑动TableView时,按需加载内容
优化六、在willDisplayCell:forRowAtIndexPath:代理方法中给cell绑定数据

在cellForRowAtIndexPath方法中绑定数据,cell其实还未显示,该方法有大量的布局绘制操作,只能将要显示的cell绑定数据就行.

优化七、避免离屏渲染

下面情况会导致离屏渲染:设置mask遮盖,设置 layer.masksToBounds/view.clipsToBounds属性为True,设置 layer.allowsGroupOpacity的属性为True,设置阴影,光栅化

参考资料:<https://juejin.im/post/5acf34eff265da237314d6e0

上一篇 下一篇

猜你喜欢

热点阅读