iOS: 3个UILabels相互约束

iOS: 3 UILabels under each other constraints

我下面有 3 个 UILabes。第一个顶约束是20superview,第二个是20first label。第三个是 20second 一个。但有时第一和第二标签的文本是空的。我只是想让我的第 3 个标签变成 20superview,但是当我设置约束时它变成 20+20+20 to superview.

是否可以只使用情节提要来解决这个问题,或者我必须使用一些代码。

抱歉我的英语不好,请帮帮我。

您可以通过编程方式执行此操作,获取所有标签的 HeightTop Space 约束的出口。

检查标签文本,如果为空则将 HeightTop Space 约束条件 Constant 设置为 0

喜欢,

如果第一个标签文本为空,则将第一个标签 Height constraint 常量设置为 0,将 Top Space 约束 Constant 设置为 0。您可以用同样的方法检查其他标签。

您可以在 UIView 中添加每个标签。使顶部 Label 约束为 20 到超级视图(在这种情况下将是 20 到容器 UIView 的顶部)。
然后让 UIView 1 有 top 0 到 superview。 UIView 2 的 top 0 到 UIView 1,UIView 3 的 0 到 UIView 2。

然后你可以隐藏每个 UIView,当你在它对应的 UILabel 中没有任何文本时,它们会很好地显示。

考虑到您的要求,我已经为它创建了一个带有 3 个标签的演示。但是我已经在 Stack View 中添加了垂直方向的这 3 个标签。然后我在 Stack View 之外的 UIView 中添加了一个按钮,然后在单击按钮时我隐藏了第二个标签。这样做我得到了你需要的结果。

@IBAction func btnClicked(sender: AnyObject) {
    lbl2.hidden = true
}

希望对您有所帮助。