UITableViewCellAutomaticDimension表现得很奇怪

时间:2016-08-26 10:59:46

标签: ios swift uitableview

我有一个带有多个自定义单元格的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()
    }
}

虽然这很好,但我对此解决方案并不满意。有人能指出我正确的解决方案吗?

1 个答案:

答案 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()