可以动态构建布局吗?

Possible to dynamically build layout?

我有一个联系人的视图。根据用户提供的联系信息,如果信息可用,我想包含标签,如果信息不可用,我想不占用 space 以避免一堆字段,如 tel: email: 等。空白,

页面在故事板中布局。如果标签为空或以其他方式动态构建页面,有没有办法让标签不占用 space?

我在考虑 [label sizeToFit]; 但这似乎仍然至少为标签留下一行空 space。

编辑:显示设置为 10.f 和 0.f 的垂直约束。图片正在缩小,但它占据的 space 没有缩小。

如果您的目标是 iOS9+,您的问题的解决方案是 Stack View。 https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIStackView_Class_Reference/

这里有一个简短的介绍:https://developer.apple.com/videos/play/wwdc2015-218/

它会根据您给出或采用的视图为您处理所有布局。

Z.

您可以为此使用约束。

以编程方式构建高级布局非常复杂且容易出错,但使用自动布局选项可以做到这一点。

例如,您有一个 UILabel,有时您想将其从布局中删除。因此,您可以参考该 UILabel 的高度和宽度约束,并进行如下更改:

widthConstraint.constant  = 0.0f;
heightConstraint.constant = 0.0f;

您也可以将初始值保存在 属性 中,并在您想要添加到布局时使用它们。

---已编辑---

要生效你应该在约束改变后调用[self needsUpdateConstraints];