ios - 是否可以在 Interface Builder 中使用自动布局定位 View ,以便如果标签为空,其他 View 将不会保留空间?

标签 ios uiview interface-builder autolayout nslayoutconstraint

我有一个 UIView 我想在 Interface Builder 中使用自动布局进行定位,并且该 View 由多个标签组成。这是一个尝试的文本表示:

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

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

然而,更糟糕的是,第二个标签中通常根本没有文本。这是 View 可能具有的可选额外描述。

是否可以说“像上面那样定位,但如果第二个标签不存在,则在第一个和第三个标签之间放置 20pt 间距。”。我想确保当第二个标签为空时不会出现奇怪的间隙。

最佳答案

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

编辑后:

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

关于ios - 是否可以在 Interface Builder 中使用自动布局定位 View ,以便如果标签为空,其他 View 将不会保留空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27927157/

相关文章:

ios - 按距离对 UITableView 进行排序

iphone - 在 UIView 中加载不同的 View Controller (就像 Xcode 的 iFrame)

ios - 使用自动调整大小时,UIView 不会在旋转时调整大小

ios - @IBInspectable 在自定义按钮类中返回 nil

objective-c - 如何从界面生成器访问窗口 View ?

Xcode–UITextView 文本被截短

ios - 如何使用 SkyFloatingLabelTextField 在 swift 中验证 textField

ios - 存储数据库的脱机副本

iphone - XCode 4 中的临时分发

ios - 如何从我的 UIView 中仅删除用户添加的 subview