【问题标题】:Possible to dynamically build layout?可以动态构建布局吗?
【发布时间】:2016-01-01 04:46:20
【问题描述】:

我有一个联系人的视图。根据用户提供的联系信息,如果信息可用,我想包括标签,或者如果信息不可用,则不占用空间以避免一堆空白的字段,如电话:电子邮件:等,

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

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

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

【问题讨论】:

标签: ios objective-c label sizetofit


【解决方案1】:

您可以为此使用约束。

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

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

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

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

---已编辑---

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

【讨论】:

  • 如何为标签设置约束?
  • 在 Interface Builder 中,您可以使用助手编辑器模式(带 VC 的 Interface Builder)和选项将选定的约束拖到您的代码中。然后操纵它。
  • 那是缩小视觉但留下空白空间。有没有办法消除空白空间,使整个视图崩溃。
  • 我没有遇到您的问题,但是通过正确的约束分配,您可以做任何事情。你能发一张你的问题的图片吗?
  • 例如,我对图像设置了高度限制。当我在代码中将其更改为 0 时,图像消失了,但图像所在的位置仍然存在。用标签尝试了同样的事情。我对约束不是很熟悉。
【解决方案2】:

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

这里有一个快速介绍:https://developer.apple.com/videos/play/wwdc2015-218/

它将根据您提供或采取的视图为您处理所有布局。

Z.

【讨论】:

  • 这看起来不错,但我的目标不是 9。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
相关资源
最近更新 更多