可以动态构建布局吗?

时间:2015-10-04 11:55:09

标签: ios objective-c label sizetofit

我有联系人的观点。根据用户提供的联系信息,如果信息可用,我想要包含标签,或者如果信息不可用则不占用空间,以避免像tel:email:等空白一样的字段,

该页面在故事板中列出。有没有办法让标签在空的情况下占用空间或以其他方式动态构建页面?

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

编辑:显示垂直约束设置为10.f和0.f.图像正在缩小,但不是它占据的空间。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以使用约束。

以编程方式构建高级布局非常复杂且容易出错,但使用自动布局选项可以执行此操作。

例如,您有一个UILabel,有时您想要从布局中删除它。因此,您可以引用该UILabel的高度和宽度约束,因此更改如下:

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

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

--- ---编辑的

要生效,您应在更改约束后调用[self needsUpdateConstraints];

答案 1 :(得分:0)

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

您可以在此处找到快速介绍:https://developer.apple.com/videos/play/wwdc2015-218/

它将根据您提供的视图或从中获取视图来处理所有布局。

Ž。