# UITableView
# 一、滑动卡顿
# 出现的情况
- 主线程
阻塞
。例如请求数据也是主线程,请求时 + 滑动页面 图片
过大 + 显示条目多- 滑动
动画代码
过于复杂 短时
请求次数过多,不断重置 tableview.datasource 数据内容短时
多次请求数据 + cell 在input 输入情况- ...
# 解决
请求阻塞主线程
: 请求采用异步,滑动页面 判断是否请求中,避免重复请求数据图片 + 条目过多
: 下载后的图片(压缩、后台处理),异步渲染 cell 。仅渲染页面停留的cell滑动动画代码过于复杂
: 优化动画代码、不要滑动动画短时请求次数过多
: 看第1条短时多次请求数据 + cell 在input 输入情况
: 看第1条,在渲染前,是否缓存输入的内容,在渲染时在重新赋值刚输入的内容
预渲染、绘制 都需要注意时机。
# 二、cell 不定高 (我常用1
、 2
)
- 在
数据模型赋值时
,算出高度 (请求数据结果赋值时,并调用计算高度方法 结果给model的一个属性:model.height = xx
) - 在
渲染cell高度
时,根据 indexPath.section 中区分高度(渲染cell高度 尽量避免计算)多个section中同cell一样高度
- 预设高度
estimatedRowHeight
+tableView.rowHeight = UITableViewAutomaticDimension
(注意:这是所有cell
的都不定高了)