动态高度 UITableViewCell 闪烁

Posted

技术标签:

【中文标题】动态高度 UITableViewCell 闪烁【英文标题】:Dynamic height UITableViewCell flickering 【发布时间】:2021-08-04 14:07:45 【问题描述】:

我有一个动态高度 UITableViewCell 在滚动回顶部时闪烁的问题。

我已将.estimatedRowHeight.rowHeight 的值设置为UITableView.automaticDimension

我的限制如下图所示:

字幕标签可以有 1 到 20 行。有了这些约束,我确实得到了我想要的——布局本身看起来很棒。当我滚动到 TableView 的末尾时——一切正常,但是当我开始向上滚动时——UI 闪烁。

可能是什么问题以及如何解决?

【问题讨论】:

【参考方案1】:

您可以尝试以下解决方案,希望对您有所帮助:-

 var cellHeights: [IndexPath : CGFloat] = [:]



 func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) 
    cellHeights[indexPath] = cell.frame.size.height
 

 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
    return UITableView.automaticDimension
 

 func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat 
    return cellHeights[indexPath] ?? 100.0
 

【讨论】:

感谢您的帮助!不幸的是,这并不能解决滚动回顶部时的闪烁问题。

以上是关于动态高度 UITableViewCell 闪烁的主要内容,如果未能解决你的问题,请参考以下文章

具有动态高度的 UITableView 和 UITableViewCell 仅在 WillDisplay 中知道

在 UITableViewCell 中添加 UICollectionView 后 UI 突然发生变化

UITableViewCell 的动态高度

在动态高度 UITableViewCell 出现后更改其高度

单向(仅高度)自定尺寸 UI 组件预览

Swift / 如何使用具有动态高度的 UITextView INSIDE UITableViewCell 与动态高度