如何仅使用情节提要使 UILabel 的 UIView 超级视图适合 UILabel 的固有高度?
Posted
技术标签:
【中文标题】如何仅使用情节提要使 UILabel 的 UIView 超级视图适合 UILabel 的固有高度?【英文标题】:How do I make the UIView superview of a UILabel fit the intrinsic height of the UILabel using the storyboard only? 【发布时间】:2018-03-28 10:41:06 【问题描述】:我有一个 UIView,它的孩子是一个 UILabel。然后,我使用约束将 UILabel 的左侧、顶部、右侧和底部与其父视图(UIView)对齐。
但我得到的是一个 UILabel,它匹配其父视图的高度,但不匹配其固有高度(小于或大于其文本内容,具体取决于 UIView 的大小)。我期望 UIView 调整自身大小以完全适合 UILabel 的高度。
那么我该如何只使用界面生成器来做到这一点呢?
【问题讨论】:
如果没有比删除你的UIView
底部约束更多的文本内容。
@Kuldeep 不会按照 OP 的要求去做。
您是否仅在使用多行标签(行数设置为零)时遇到问题?
其实UIView就是一个table view的header。
@SidGo - 在您的问题中发布完整信息是个好主意...看看这里:***.com/questions/16471846/…
【参考方案1】:
为了使 UILabel 保持其大小并强制外部视图调整大小,您可以将 Content Hugging Priority
的值更新为 1000
(也称为必需)。这可以在 Interface Builder 中选择标签时在measurements
面板中完成。
我认为它们被默认设置为750
。
这应该(如果没有其他原因导致更改)使标签采用其固有的内容大小并强制其超级视图也符合该大小。
【讨论】:
【参考方案2】:将UILabel
的top
、trailing
、bottom
和leading
与UIView
对齐(添加约束)。
从 UIView 中移除 height
和 bottom
约束(如果有)。
如果内容很大,您可能需要将UILabel
包装成UIScrollView
来代替UIView
。并将bottom
约束添加到UIScrollView
UILabel
(251)的Content Hugging Priority
默认大于UIView
(250)。验证这一点
【讨论】:
【参考方案3】:使用自动布局非常简单。只需按照以下步骤操作
1 - 拖动一个 UIView 和align it vertically and horizontally
在中心。
2 - 现在将 UILabel 拖入 UIView 和 align the label also horizontally and vertically in centre
。现在,IB 将 WRT 中心的标签与超级视图而不是 UIView 对齐。所以,在 size-inspector
部分中更改它。
3 - 完成此操作并删除所有红线后,使用命令键同时选择标签和 UIView。
4 - 现在,给他们如下约束
leading = 0, trailing = 0
并选择equal width
和equal height
。
你已经完成了。如果你想测试 UIView 的大小是否与标签的内容相关,尝试将标签的字体增加到更大的大小,你会看到视图的大小将与标签。
到了,你完成了:-D。希望,这对您有所帮助。
【讨论】:
【参考方案4】:如果有人遇到此问题,则:
在 UIView 中有 2 个标签 按照这里的建议做所有事情在我的例子中,我将 BOTH UILabel 的 Vertical Content Hugging Priority
设置为 1000。然后其中一个标签具有不同的字体。 (即一个标签应该比另一个小)
高度不明确,因为两个标签都试图在superview
上强制它们的高度。一旦我降低了较小标签的优先级,一切正常。
【讨论】:
以上是关于如何仅使用情节提要使 UILabel 的 UIView 超级视图适合 UILabel 的固有高度?的主要内容,如果未能解决你的问题,请参考以下文章