具有动态高度单元格但所有单元格同时显示的 iOS 表格视图

Posted

技术标签:

【中文标题】具有动态高度单元格但所有单元格同时显示的 iOS 表格视图【英文标题】:iOS tableview with dynamic-height cells but all cells are displayed at once 【发布时间】:2015-06-12 19:14:50 【问题描述】:

我想实现以下目标:

带有动态高度单元格的表格视图(我可以这样做,感谢this article。 但是表格视图的高度设置为所有单元格的动态高度一起,这意味着所有单元格同时显示在表格视图中

-> 基本上是一个具有动态高度的视图列表(使用自动布局和包装标签),如果可能的话,我不想计算像素高度

【问题讨论】:

要实现动态高度,您需要使用 UITableViewAutomaticRowDimension 并在单元格内从上到下和从左到右正确设置约束。并使用委托方法给出估计的高度。 您阅读了我的整篇文章吗?我设法做到了,我还需要同时显示所有单元格(意思是,表格视图的高度设置为所有动态单元格高度的总和)。实际上我想要一个带有动态高度项的堆栈视图。 我读了你的帖子好友。对不起,我不明白。如果您可以分享您所说的任何图像,那么我可以帮助您...因为我无法获得您的最后一行“带有动态高度项的 stackview”,您想通过 tableview 来实现这一点。? 您是否在表中添加了任何底部约束,那么您需要将其删除。并向表格添加高度约束,它应该等于 self.table.contentSize.height。然后调用 layoutIfneeded。我相信这会奏效。就像我做过类似的事情。 您能提供工作代码示例吗?为'marker'标签设置了底部约束,并且在marker和tableview之间有一个垂直约束。问题是 tableview 的高度必须动态设置,我不知道何时、如何以及达到什么值(我猜) 【参考方案1】:

根据您的说法,听起来您希望所有单元格同时可见,这样表格就不会滚动。如果是这样,你真的需要使用UITableView吗?

听起来UIStackView 是您想要的,它会自动调整所有大小。这将有效地让您显示一个充满“单元格”的屏幕,所有大小都正确,无需滚动。

如果你想尝试堆栈视图的方法,你可以使用 Interface Builder 拖一个进去。然后,您可以直接在 Interface Builder 中向其中添加项目,或者,如果您一次又一次地复制相同的内容并希望在代码中执行此操作,则使用 addArrangedSubview() 添加它们,如下所示:

stackView.addArrangedSubview(yourView)

【讨论】:

另外,UIStackView 仅适用于 ios 9。

以上是关于具有动态高度单元格但所有单元格同时显示的 iOS 表格视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中创建具有动态 tableview 高度的动态 tableview 单元格

具有动态标签高度的 IOS Tableview 自定义单元格

UITableView:如何知道 TableView 的所有具有动态单元格高度的单元格何时被调整大小?

具有自动布局的 UITableView 中的动态单元格高度

设置 tableviewcell 高度以显示具有动态高度单元格的完整内部/嵌套 uitableview

UITableView - 由单元格本身控制的动态单元格高度