我有一个带有多个自定义单元格的UITableView。所有类型细胞的高度由UITableViewAutomaticDimension计算。
正常滚动时工作正常。但是当滚动超快时,它会返回奇怪的高度。在我滚动一段时间并再次回到它之后,它再次正确地重新加载。
我试图检查uitableview是否快速滚动并重新加载表格如下:
func scrollViewDidScroll(scrollView: UIScrollView) {
if scrollView.panGestureRecognizer.velocityInView(self.view).y < -750
fastScroll = true
}
}
func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if fastScroll {
fastScroll = false
myTableView.reloadData()
}
}
虽然这很好,但我对此解决方案并不满意。有人能指出我正确的解决方案吗?
答案 0 :(得分:1)
因此,只有插入或删除单元格时才会出现这种奇怪现象。我能够通过添加 setNeedsLayout()和 layoutIfNeeded()
来解决这个问题。myTableView.beginUpdates()
myTableView.deleteSections(deleteIndexes, withRowAnimation: .None)
myTableView.insertSections(insertIndexes, withRowAnimation: .None)
myTableView.reloadSections(reloadIndexes, withRowAnimation: .None)
myTableView.endUpdates()
myTableView.setNeedsLayout()
myTableView.layoutIfNeeded()