TableView优化检查清单
2019-02-04 本文已影响38人
溪石iOS
题图
UITableView 几乎是每个iOS开发者第一个使用的数据展示组件,在展示大量数据时,如果不组织好数据或视图,会占用大量内存,造成滚动卡顿,影响用户体验,本篇列举出常见的优化点,供你开发时做检查清单。
优化点1:cellForRowAtIndexPath
主要思路是减少cellForRowAtIndexPath 方法中的运算量,从以下方面检查
1.1 加载图片时,做异步处理,加载完成后再单独更新cell,不要用reloadData刷新数据。
1.2 图片有变换时,提前调整图片尺寸,并做缓存,刷新时直接取缓存图片。
1.3 优先使用CALayer绘制Cell,避免继承UITableViewCell,覆盖drawRect,因为cell除了contentView外,还有其他视图,会导致叠加运算。
1.4 复杂数据提前计算并缓存。
优化点2:heightForRowAtIndexPath
主要思路是减少高度的计算时间,有以下方法:
2.1 如果都是固定cell高度,不要显式实现代理 heightForRowAtIndexPath,使用 rowHeight属性设置固定值。
2.2 非固定高度,提前计算并缓存,刷新时直接取缓存高度值。
2.3 总是通过estimatedHeightForRowAtIndexPath 返回估计高度,避免非显示cell请求高度。