UITableViewCell 动态约束

UITableViewCell dynamic constraints

我正在用动态高度的自定义单元格填充 UITableView。我正在使用 here.

中描述的方法

为了简单起见,假设我的单元格包含 2 个 UILabel,如下所示。

对于 UITableView 中的所有单元格,紫色的 UILabel 将保持相同的高度。在本例中,紫色的 UILabel 比绿色的 UILabel 高。我希望紫色 UILabel 底部和 contentView 底部之间的约束为 8。

但是,还有第二种可能的情况,如下所示。

在这种情况下,紫色的UILabel还是和第一种情况一样大(虽然看起来小了,但是由于整个cell的高度比较大,相对来说,看起来小了),但是绿色的UILabel就大了更大。在这种情况下,我希望绿色 UILabel 底部和 contentView 底部之间的约束为 8。

现在我的困境是我可以设置一个或另一个(我正在使用故事板)。但我想不出同时使两者成为可能的方法。我的猜测是您需要在运行时根据绿色 UILabel 的大小以编程方式调整约束。

有什么想法吗?

我在 Swift 中使用 XCode 6.1.1。

谢谢。

如果紫色标签始终保持相同高度,那么您应该只设置元素的 height 约束,而不是将其 bottom 约束设置为 superview 为 8。

对于绿色元素,也许您可​​以 select 该元素和 contentview 并将它们设置为具有来自 "add new constraint" 窗格底部的 equal heights故事板 window。然后,select 该约束并在属性检查器中将其乘数编辑为某个小于 1 的值。这将使元素的高度始终是父视图高度的某个百分比。你可以调整它直到它让你从它下面的视图中接近所需的 8px。