根据子视图高度调整 UITableViewCell(从 xib 创建)高度

Posted

技术标签:

【中文标题】根据子视图高度调整 UITableViewCell(从 xib 创建)高度【英文标题】:Resize UITableViewCell (created from xib) height according to subview height 【发布时间】:2017-09-19 13:59:53 【问题描述】:

我可以通过设置以下约束来根据子视图高度调整超视图高度,如下所示:

]

我想在我从 xib 创建的 UITableViewCell 中实现相同的效果。但我没有发生。我已经为我的 UITableViewCell 设置了图片中显示的相同约束。我需要做一些特别的事情来调整 UITableViewCell 根据子视图高度调整自身的大小吗?

【问题讨论】:

是的,您应该使用 UITableViewAutomaticDimension : self.tableView.rowHeight = UITableViewAutomaticDimension self.tableView.estimatedRowHeight = 100 如果您正确设置约束并且您的子视图大小发生变化,它将动态更新行高 好文章在这里@987654323 @ 我知道,我会在代码中这样做。我想看到的是在 xib 中,当子视图高度发生变化时,单元格的内容视图和单元格高度 itslef 也会发生变化。如附图所示。 好的,我知道你想要实现什么。你能显示你在tableviewcell的xib中定义的约束吗? @axiem imgur.com/a/HwD4O 这些是我的限制。我想要实现的是当我在朗姆酒时间隐藏橙色视图时,单元格将自身调整为 blackview 的大小。 已编辑以将图像内嵌到原始问题中 【参考方案1】:

在 xib 中的 TableViewCell 中设计 ui,而不是在视图中。对于根据子视图的动态单元格高度,添加前导尾随顶部底部约束。不要添加高度限制。 在包含 tableview 实例的视图控制器中放置代码

 mytableView.rowHeight = UITableViewAutomaticDimension
  mytableView.estimatedRowHeight = 200.0

【讨论】:

我必须添加高度约束,因为我要向 UITableViewCell 内容视图添加三个子视图。如果我不添加高度约束,则会出现不添加高度或 Y 约束的错误。 尝试在不添加恒定高度约束的情况下消除错误。将顶部约束添加到视图而不是布局指南。设置子视图的比较高度(与父视图成比例或与其他子视图成比例)或设置不同的垂直内容拥抱优先级。 imgur.com/a/HwD4O 这些是我的限制。当我在运行时以编程方式隐藏橙色视图时,我希望单元格将自身调整为 blackview。 要解决歧义,您需要将单元高度清除到系统。如果黑色视图有子视图,则向子视图添加约束将清除系统的黑色视图高度,如果您没有任何黑色视​​图的子视图,则需要为黑色视图指定高度约束。要操作橙色视图高度,您需要将高度约束及其出口添加到视图控制器,以便您可以更改常量。程序化的框架更改不会与自动布局配合得很好。你需要做这个组合之一。设置 1) 橙色视图高度 + 单元格高度 2) 设置黑色视图高度 + 单元格高度 3) 设置两个视图高度【参考方案2】:

你必须像这样设置rowHeight:

tableView.estimatedRowHeight = 250w

【讨论】:

以上是关于根据子视图高度调整 UITableViewCell(从 xib 创建)高度的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 无法根据它包含的动态 CollectionView 调整高度

何时何地根据实际宽度更新 UITableViewCell 子视图的约束

UITextView 高度未在 UITableViewCell 中调整大小

如何使用自动布局根据子视图调整父视图的高度

如何使用 AutoLayout 根据父高度调整子视图高度而不添加/删除约束

根据最高子视图按钮自动调整超级视图高度