【发布时间】:2018-12-18 17:19:11
【问题描述】:
我有一个自定义UITableViewCell,其中包含一个StackView,其中包含单元格内容视图的顶部、底部、前导和尾部约束。
当我设置 tableView 时,我给它一个估计的高度,并将 rowHeight 设置为 UITableViewAutomaticDimension。
在我的cellForRowAt 数据源方法中,我将单元格出列,然后调用cell.setup(),它将任何给定数量的视图添加到我的单元格的stackView。
问题是:我的单元格总是被调整为 80p 的估计高度。无论我向单元格的 stackView 添加了多少视图,它都会被塞进 80p 的高度。在 cellForRowAt 数据源方法返回之前,stackView 和单元格不会随着我插入单元格的每个新项目而增长。
我为我的 stackView 尝试了不同的分发设置,但我不确定我在这里做错了什么。
【问题讨论】:
-
您是否实施了
heightForRowAt以返回 80?如果是这样,你不应该这样做。如果没有,您要添加的 “任何给定数量的视图” 是否有高度限制?如果不是,那可能就是问题所在。 -
为了使单元格的动态大小起作用,单元格内容必须能够自行定义高度。
UIStackView不能这样做,因为它会调整其内容的大小以适应它自己的大小,而不是相反。所以单元格内没有任何东西能够告诉单元格它应该是什么大小。 -
@DonMag 我没有实现它,我不认为我正在为那些添加高度限制,所以也许这就是问题所在?我不在我的电脑附近,但我会尽快检查一下
-
@UpholderOfTruth 那么有什么解决办法吗? DonMag 提到对 stackView 的视图进行高度限制
-
这完全取决于你想要实现什么样的布局。单元格内的某些东西必须能够定义高度,因此
UIStackView它本身需要是一个固定高度,或者您可以使用其他东西来代替包含视图。提供UIStackView的子视图可能不起作用,因为它的目的是调整其子视图的大小以适应自身
标签: ios swift uitableview uikit