动态高度单元格,滚动不稳定

时间:2017-04-25 07:10:09

标签: ios uitableview scroll

我知道这是一个在很多地方回答的热门话题,但没有答案解决了我的问题。我正在开发一个具有多个单元格类型的主表视图的应用程序(表格可以达到数百个单元格),每个单元格具有不同的潜在高度,具体取决于其内容。我试图更多地依赖于动态单元格高度,在绘制单元格时由系统计算,但当我尝试滚动到表格底部时,我的滚动受到严重影响。

我理解一个单元格的估计高度应该非常接近最终的高度,但除非我通过总结所有文本,图像,约束和手工计算每个单元格的大小,否则无法做到这一点。等等...这几乎打破了使用动态单元格高度的优势,不是吗?

我在网上发现的最佳解决方案是在“cellWillDisplay”上缓存真实的单元格高度,但它仅在所有单元格至少呈现一次后才有效。 事情是,当我的应用程序加载时,它会自动滚动到底部而不会动画,因此不会为上面的所有单元格调用“cellWillDisplay”。

这是我的estimatedHeightForRow片段:

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    if let object = self.fetchedResultsController?.object(at: indexPath) as? Object {
        if let objectID = object.objectIDPermanentString {
            if let savedHeight = self.rowsHeights[objectID] {
                return savedHeight
            }
        }
    }
    return UITableViewAutomaticDimension
}

这是我的cellForRow方法:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let object = self.fetchedResultsController?.object(at: indexPath)
    let cell = tableView.dequeueReusableCell(withIdentifier: object.id, for: indexPath)
    self.configureCell(cell: cell, object: object)
    return cell
}

0 个答案:

没有答案