【发布时间】:2017-04-29 04:44:33
【问题描述】:
如何让 UITableView 的高度等于其内容的高度? (即内容大小)
到目前为止,我的解决方案是在我知道高度发生变化时为表格高度和setNeedsUpdateConstraints() 创建一个约束。而且,我不能将此约束设置为 contentSize,而是需要手动计算高度,并加上单元格的高度。
这使得处理起来非常麻烦,尤其是当我在另一个表中有一个表时,或者当我不知道内容大小会改变时。
对我来说这似乎是一个正常的用例,有一个包含其内容高度的表格,我想知道我是否遗漏了一些明显的东西?
【问题讨论】:
-
UIStackView听起来像是解决此问题的更好解决方案。当您不想使用内置的UIScrollView时,为什么要使用UITableView? -
感谢您的建议。但是,如果我想在另一个上下文中使用带有滚动条的同一个对象怎么办?此外,从概念上讲,我需要一个表格,因为它有单元格。
UIStackView看起来像是一堆视图。 -
如果表格的高度与其 contentSize.height 的高度相同,则不会滚动.. 表示不重复使用单元格。因此,您将需要一些 contentSize 的最大值,超过该最大值,您将允许表格的高度 > table.contentSize 高度。如果这是您正在寻找的东西,那么最好的方法可能是让 tableView 的 ContentSize 有一个观察者。每当它发生变化时,请检查并更改桌子的高度(如果需要)。
-
@dRAGONAIR 你如何添加那个观察者?
-
Martin 只需创建
UIView,将单元格中的所有内容放在那里,然后在UITableViewCell中重复使用或直接在任何其他UIViewController中使用。跟踪UITableVIew的高度变化在代码质量和应用程序性能方面是非常糟糕的做法。
标签: ios uitableview