我有一个带有多个自定义单元格的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()
}
}
尽管这可以正常工作,但我对这种解决方案不满意。有人可以指出正确的解决方案吗?
最佳答案
因此,只有在我插入或删除单元格时才会出现这种异常。我可以通过添加 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()