前言
Xcode 13.3.1
iOS 11.3.1
先说下我这遇到的情况, 1、tableView 刷新时候闪动、或者定位出错 2、tableView刷新 + scrollToRow 滚动 闪动
1.1、tablwView预设高度
tableView.rowHeight = UITableView.automaticDimension
tableView.rowHeight = 0
tableView.estimatedRowHeight = UITableView.automaticDimension
tableView.estimatedSectionHeaderHeight = 0
tableView.estimatedSectionFooterHeight = 0
什么?你说上面不行!嗯,我的好像也是不行,那就没事了,在继续添加下一个
1.2、压制reload刷新隐式动画
CATransaction.setDisableActions(true)
tableView.reloadData()
CATransaction.commit()
以上单纯的刷新就不会出问题了
但是我的是上诉情景2,依旧会闪动,使用scrollToRow 滚动动画依然有问题(如果动画设置false就没问题了)
2.1、tableview使用 insertRows 插入而不是reload刷新
使用情景:一个类似聊天的AI互动,发送数据成功后,tableview滑动到这条最新数据上 使用说明:使用CATransaction 压制 insertRows插入动画,然后刷新单独行,刷新单独行不行压制动画,否则会导致部分内容展示失败(原因未知)
let indexPath = IndexPath(row: count - 1, section: 0)
CATransaction.setDisableActions(true)
table.insertRows(at: [indexPath], with: .none)
CATransaction.commit()
table.reloadRows(at: [indexPath], with: .none)
DispatchQueue.main.async {
table.scrollToRow(at: indexPath, at: .top, animated: true)
}
什么?你说上面不行!嗯,我的好像也有部分不行,那就没事了,在继续添加下一个
2.2、tabview 频繁刷新闪动问题
使用场景:我这边因为tableView 的cell 中嵌套了另外一个 tableview,里面tableview刷新之后,外边继续刷新,然后继续第三步,就会发生闪动,我取消一个刷新之后,闪动问题解决
多次刷新可能导致闪动
什么?你说上面不行!嗯,才疏学浅,告辞
|