考虑一个包含三个UILabel
s 的视图,其垂直约束定义如下:
[self.view
addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:[label1]-2-[label2]-2-[label3]"
options:0
metrics:nil
views:views]];
这将产生一个布局,其中标签垂直堆叠,每个标签之间有 2px 填充。
在我的应用程序中,有时一个或多个标签上显示的文本为 nil(或空白),这意味着标签框架的高度 == 0。在这种情况下,我希望 0 高度标签之间的 2px 填充为崩溃了。
当所有标签都有文本值时,我希望布局为:
label1 文本
[2px]
label2 文本
[2px]
label3 文本
当label2
文本值为 nil 时,我希望布局为:
label1 文本
[2px]
label3 文本
在后一种情况下,标签 2 实际上仍然存在,但高度为 0,并且它的 2px 填充已折叠。
问题:这可能吗?我将如何定义约束来实现这一点?
编辑
我意识到可以在子类中实现填充(边缘插入)UILabel
并将填充从约束中取出。我可能会走那条路,只是希望有一种方法可以在约束定义中定义折叠此填充。