是否可以在Interface Builder中使用自动布局定位视图,以便在标签为空时其他视图不会保留空间?

时间:2015-01-13 16:44:00

标签: ios uiview interface-builder autolayout nslayoutconstraint

我有UIView我想在Interface Builder中使用自动布局定位,视图包含多个标签。这是一个尝试过的文本表示:

            |
-- First label with some text -------------------
            |
-- Second label that may not have text in it ----
            |
-- Third label with some text -------------------
            |

它基本上有三个标签位于它们之间,距离边缘约20pt。

然而 - 这里是踢球者 - 第二个标签通常根本没有文字。它有点像视图可能的额外描述。

是否可以说“像上面这样的位置,但如果第二个标签不存在,则在第一个和第三个标签之间放置20pt间距。”我希望确保第二个标签为空时没有奇怪的差距。

1 个答案:

答案 0 :(得分:1)

您需要从superview中删除第二个标签,以使其约束消失。您可以在第三个和第一个标签之间添加一个较低优先级的约束,如果没有第二个标签,则可以为它们提供所需的间距。在代码中,您需要检查第二个能否没有文本,如果是,请将其从超级视图中删除。这将导致满足较低优先级约束,并向上移动第三个标签。

编辑后:

在不删除任何内容的情况下执行此操作的另一种方法是在第一个位置创建第三个和第一个标签之间的垂直间距约束,而不是第三个和第二个标签之间的垂直间距约束。为该约束创建一个IBOutlet,如果第二个标签没有文本,则在代码中更改其常量值。第二个标签仍然存在,但第三个标签将位于其上。