最小细胞高度 - Autolayout

时间:2016-07-02 11:15:52

标签: ios swift autolayout nslayoutconstraint

我有一些 Autolayout 单元格 - 但是如果第二个Label不包含任何文本(例如在表单中),他们希望它们具有最小高度

我认为最简单的方法应该是创建一个额外的Constraint with Priority 999来设置最小高度,就像在那张照片中一样:

enter image description here

然而,标签(“Mayer Thomas”)不再是自我调整了。

什么是解决此类问题的最佳方法?我可以创建2个布局,但在我看来,这应该不是一个好的解决方案。

2 个答案:

答案 0 :(得分:1)

将可选标签的高度约束设置为大于或等于您想要的任何高度。此外,将标签的压缩阻力内容拥抱设置为必需。如果有更多内容,您的标签现在应该消耗额外的高度,或者只是采用设置的最小尺寸。

[label addConstraint:[NSLayoutConstraint constraintWithItem:label attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0 constant:15/*the min height you need*/]];
[label setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
[label setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];

答案 1 :(得分:0)

为此您需要使用EqualHeights并相应地更改乘数,它们将自我调整大小。

要做到这一点,只需按CTRL +将标签拖到单元格上给出相等的高度,并将乘数更改为1将其更改为您想要的任何值。例如: - 0.5意味着它将占据细胞高度的一半。