当前位置: 首页 > 知识库问答 >
问题:

UITableView单元格的动态高度问题(Swift)

柯学
2023-03-14

可变长度的文本数据正在注入到表视图单元格标签中。为了正确调整每个单元格高度的大小,我在viewDidLoad()中实现了:

self.tableView.estimatedRowHeight = 88.0
self.tableView.rowHeight = UITableViewAutomaticDimension

这估计高度为88.0像素,如果更大,应该会自动调整高度大小。它非常适用于尚未滚动到的单元格(因为UITableViewAutomaticDimenti在滚动到单元格时被调用),但不适用于最初在加载数据时在屏幕上呈现的单元格。

我尝试过重新加载数据(正如许多其他资源中建议的那样):

self.tableView.reloadData()

在这两个viewDi外观()viewWill外观(),它没有帮助。我迷路了…有人知道如何渲染最初在屏幕上加载的单元格的动态高度吗?

共有3个答案

咸高谊
2023-03-14

SWIFT 3

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 160

和!!!在故事板中:你必须设置顶部

拓拔安邦
2023-03-14

使用这个:

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 300

并且不要使用:高度用于行列索引路径委托函数

此外,在故事板中,不要设置包含大量数据的标签的高度。给它top、bottom、leading、tailing约束。

裘安阳
2023-03-14

试试这个:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

编辑

func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

斯威夫特 4

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

Swift 4.2

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

在两种方法之上定义。
它解决了问题。

PS:这需要顶部和底部约束。

下面是示例

 类似资料:
  • 我有用自定义单元格(继承自)填充的用户界面视图,每个单元格都包含一个,该视图根据其内容自动调整大小。事情是这样的,如何根据内容(可变视图)更改 单元格的高度。 该解决方案必须是动态的,因为用于填充< code>UIWebViews的HTML是从不断变化的提要中解析的。 我觉得我需要使用委托方法 中更改单元格的高度吗? 任何帮助都是伟大的。谢谢 两年多前我问过这个问题。通过介绍自动布局,可以找到iO

  • 场景- > TableView高度是使用纵横比相对于superview的高度动态设置的。 TableViewCell的高度是根据表格视图的高度计算的: 问题 - 最初在委托方法中没有正确计算表格视图高度。但在滚动单元格后正确计算。 尝试的解决方案: 在视图中重新加载。 调用 在单元格中进行. 有什么方法可以正确计算出这个表格的高度吗?

  • 我有一个具有动态高度的表视图与其他具有动态高度的UI组件一起在表视图中 数据,模型在这里.. 单元格子视图。。 这是内部tableView及其约束! 构造器

  • 我有一个表格视图,每个单元格都有自己的高度,因此不适合使用。相反,现在我使用和。这意味着它调用单元格上的函数来确定它的高度。这一切都很好。 问题是当你重新加载屏幕上的单元格时。例如,向下滚动以显示单元格10,然后重新加载单元格10,效果很好。但是当您开始向上滚动,经过您已经看到的单元格时,它会恢复到每个单元格的estimatedRowHeight,完全不考虑< code>sizeThatFits,

  • 我觉得这可能是一个常见的问题,我想知道是否有任何共同的解决方案。 基本上,我的UITableView拥有每个单元格的动态单元格高度。如果我不在UITableView的顶部,并且我< code > table view . reloaddata(),向上滚动会变得不稳定。 我认为这是因为我在向上滚动时重新加载了数据,UITableView正在重新计算每个可见单元格的高度。如何减轻这种情况,或者如何只

  • 我正在用Xcode 10做。我在视图控制器中有一个表视图。 单元格的标签设置为前导、跟踪、顶部和底部,行为0 在ViewDidload()中,我添加了 但是当我点击Viewcontroller时,tableview没有加载正确的高度单元格(需要自动调整大小的单元格没有加载,不需要的单元格被调整大小) 然后我加上这段代码 代码只对最初的几个单元格运行良好,但是当我向下滚动更多的时候(我有大约超过10