性能优化-UITableView的优化使用

gitHub学习地址:https://github.com/potato512/SYDemo_TablePerformance

UITableView的性能优化

1、使用reuseIdentifier来重用cells

2、缓存cell的行高

(1)当cell的行高是固定的时,使用固定行高;

(2)当cell的行高是不固定时,根据内容进行计算后缓存起来使用。第一次肯定会计算,后续使用缓存时就避免了多次计算;高度的计算方法通常写在自定义的cell中,调用时,既可以在设置cell高的代理方法中使用,也可以自定义的model中使用(且使用时,使用get方法处理);

(3)另外需要注意,cell的赋值和cell行高的计算需要分开,否则也会造成内存爆增,且界面异常的卡顿;

3、减少subviews的数量

(1)自定义的子视图可以整合在形成一个整体的就整合成一个整体的子视图;

(2)同时使用drawRect进行绘制(即将GPU的部分渲染转接给CPU);

(3)异常绘制,且设置属性"self.layer.drawsAsynchronously = YES;"

4、数据处理

(1)使用正确的数据结构来存储数据;

(2)数据尽量采用局部的section,或cellRow的刷新,避免reloadData;

(3)大量数据操作时,使用异步子线程处理,避免主线程中直接操作;

5、图片处理

(1)使用异步子线程处理,然后再返回主线程操作

(2)图片缓存处理,避免多次处理操作

(3)图片圆角处理时,设置layer的shouldRasterize属性为YES,可以将负载转移给CPU

6、按需加载内容

(1)滑动操作时,只显示目标范围内的cell内容,显示过的超出目标范围内之后则进行清除;

(2)滑动过程中,不加载显示图片,停止时才加载显示图片;

7、使用drawRect,或CALayer进行文本或图片的绘制


其他可能出现影响的处理:

1、如果cell内现实的内容来自web,使用异步加载,缓存请求结果

2、尽量使所有的view的opaque属性为YES,包括cell自身,以提高视图渲染速度(避免无用的alpha通道合成,降低GPU负载

3、避免渐变,图片缩放的操作

4、使用shadowPath来画阴影

5、尽量不使用cellForRowAtIndexPath:,如果你需要用到它,只用一次然后缓存结果



示例Demo

未优化前:用户操作时,耗时、界面卡顿、且内存异常。


优化后:用户操作流畅,内存稳定。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番薯大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值