如何使用故事板使UILabel的UIView超级视图符合UILabel的内在高度?

时间:2018-03-28 10:41:06

标签: ios autolayout

我有一个孩子是UILabel的UIView。然后,我使用约束将UILabel的左侧,顶部,右侧和底部与其超视图(UIView)的左侧,顶部,右侧和底部对齐。

但我得到的是一个UILabel,它匹配其超视图的高度,但不匹配其内在高度(根据UIView的大小,小于或大于其文本内容)。我期望UIView能够调整自身以适应UILabel的高度。

那么我该如何仅使用界面构建器呢?

4 个答案:

答案 0 :(得分:0)

为了使UILabel保持其大小并强制外部视图调整大小,您可以将Content Hugging Priority的值更新为1000(a.k.a.必需)。在Interface Builder中选择标签时,可以在measurements面板中完成此操作。

我认为它们被设置为750的默认值。

这应该(如果没有其他因素导致更改)使标签采用其内在内容大小并强制其superview也符合该大小。

答案 1 :(得分:0)

top的{​​{1}},trailingbottomleadingUILabel对齐(添加约束)。 如果有的话,从UIView中删除UIViewheight约束。

如果内容很大,您可能需要将bottom换成UILabel来代替UIScrollView。并向UIView

添加bottom约束 默认情况下,UIScrollView(251)的{p} Content Hugging Priority多于UILabel(250)。验证这个

答案 2 :(得分:0)

使用自动布局非常简单。只需按照以下步骤操作

1 - 将UIView和align it vertically and horizontally拖到中间位置。

2 - 现在将UILabel拖入UIView和align the label also horizontally and vertically in centre。现在,IB将中心WRT处的标签与超级视图对齐而不是UIView.So,在size-inspector部分中更改它。

3 - 完成此操作并删除所有红线后,使用命令键同时选择标签和UIView。

4 - 现在,给他们约束如下

leading = 0, trailing = 0并选择equal widthequal height

如果您想测试UIView大小与标签的内容相对应,请尝试将标签的字体增加到更大的尺寸,您将看到视图的大小与标签。

在那里,你完成了:-D。希望,这很有帮助。

答案 3 :(得分:0)

如果有人遇到此问题,则:

  • UIView内有2个标签
  • 尽一切建议在这里

在我的情况下,我将 BOTH UILabels的Vertical Content Hugging Priority设置为1000。然后,其中一个标签具有不同的字体。 (即一个标签应该小于另一个标签)

高度不明确,因为两个标签都试图将其高度压在superview上。一旦我降低了较小标签的优先级,一切就可以正常工作。