iOS学习开发iOS开发iOS开发记录

UITableView性能优化

2019-04-09  本文已影响46人  FlyElephant

UITableView是开发中最常用的组件,容易遇到流畅度不佳,卡顿问题.常见的UITableView优化能够提升App的整体性能,因此有必要总结一下性能优化的方法.

Cell重用

每次通过dequeueReusableCell方法进行单元格重用,而不是每次创建新的Cell.

            let cell = tableView.dequeueReusableCell(withIdentifier: "FlyElephantCell", for: indexPath) as! FlyElephantCell

Cell高度

Cell高度分为两种情况,分为固定高度和动态高度。一般情况下Cell能固定就固定,可以统一高度,通过隐藏SubView的形式显示Cell.

动态高度在iOS8之后通过autolayout和设置rowHeight为UITableViewAutomaticDimension来实现。

 tableView.estimatedRowHeight = 60
        tableView.rowHeight = UITableViewAutomaticDimension

如果不通过此种形式,可以缓存每个单元格高度,避免重复计算.

不透明

避免设置透明的单元格或子视图。半透明或透明元素(alpha低于1.0)的视图,很好看,但是会有消耗GPU资源,造成性能损失.

默认外观

当用户快速滑动列表时,如果发现丢帧的现象,可以考虑默认外观。当滑动速度降低的时候,低于设置的阈值时,刷新最终的视图并填充数据.

CPU & GPU

在view显示的过程中,CPU和GPU都各自承担了不同的任务,CPU和GPU不论哪个阻碍了显示流程,都会造成掉帧现象.所以优化方法也需要分别对CPU和GPU压力进行评估和优化,在CPU和GPU压力之间找到性能最优的平衡点, 无论过度优化哪一方导致另一方压力过大都会造成整体FPS性能的下降.

CPU 主要执行的任务:

GPU 主要执行的任务:

参考链接

iOS 保持界面流畅的技巧
UITableView 的完美平滑滚动

上一篇 下一篇

猜你喜欢

热点阅读