可以动态构建布局吗?
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];
。
我有一个联系人的视图。根据用户提供的联系信息,如果信息可用,我想包含标签,如果信息不可用,我想不占用 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];
。