我需要扩展UITableView
的单元格,但在执行此操作时我会看到闪烁。
我有这个实现:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// Switch row state
expandedFlags[indexPath.row] = !expandedFlags[indexPath.row]
UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseOut, animations: { () -> Void in
tableView.beginUpdates()
tableView.reloadRows(at: [IndexPath(row: indexPath.row, section: 0)], with: UITableViewRowAnimation.automatic)
tableView.endUpdates()
}, completion: nil)
}
有没有办法避免重新加载细胞时轻弹?我已阅读了几篇帖子,但对我的方案不起作用。
答案 0 :(得分:0)
tableView.beginUpdates()
....
tableView.endUpdates()
已经拥有自己的动画UIView动画,可能会产生闪烁
答案 1 :(得分:0)
您好,在花了很多时间之后,我终于找到了解决方案,可以在您扩展或折叠表视图单元格时停止表视图中的闪烁问题。
在第一步中,您必须获取表视图的当前偏移量,然后停止uiview动画,并告诉表视图您将要更新表视图中的某些行。然后像下面这样传递您当前的索引[IndexPath(row:0,section:3)]。您的表视图就像魅力一样。
let currentOffset = self.tableView.contentOffset
UIView.setAnimationsEnabled(false)
self.tableView.beginUpdates()
self.tableView.reloadRows(at: [IndexPath(row: 0, section: 3)], with: .none)
tableView.endUpdates()
UIView.setAnimationsEnabled(true)
self.tableView.setContentOffset(currentOffset, animated: false)