Swift - 如何根据 UILabel 大小(在内部)调整 UIView 的大小

标签 swift layout uiview uilabel

我对 Swift 有点陌生,我需要一些帮助:

我在 UIView 中有一个 UILabel,这个标签可以接收任意数量的文本。所以我想根据它收到的文本调整 UILabel 的大小,并调整其容器 UIView 的大小。 UILabel 必须有最大宽度但不是最大高度。这与 Whatsapp 中发生的消息文本非常相似(他的绿色容器相应地增长了里面的文本)。

我相信它是关于自动布局的,但我真的无法理解其中的大部分内容。

编辑:动态创建。

谁能帮帮我?

最佳答案

那么包含 Label 的 UIView 不应该有固定的高度。 只需添加约束来设置 UIView 宽度和 X/Y 坐标。

在其中,UILabel 应该对 UIView 的顶部/底部和右侧/左侧有固定的约束,并将它的 numberOfLines 设置为 0

有了这些约束,容器 View 将展开以根据文本调整高度。

见附件截图

添加容器 View 约束(注意没有添加底部或高度约束) Adding Container View Constraints (notice no bottom or height constraint added)

添加标签约束(固定约束到所有 UIView 边缘)

Label Constraints (fixed constraints to all UIView Edges)

带有短文本的结果

Result with short text

长文本结果

Result with long text

关于Swift - 如何根据 UILabel 大小(在内部)调整 UIView 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49934650/

相关文章:

ios - 继续将信息推送到第三个 UIView

ios - 为什么 UIDatePicker 填充两个不同的 TextField 相同的值

ios - 将2个数组组合成字典

java - 如何垂直对齐100%宽度?

android - 无法使用 ADT eclipse 在图形布局中打开 Android 布局 xml 文件

java - Swing 面板可调整间隙

ios - 容器 UIView 与底部对齐

ios - 在 swift 上使用带有 SKLabelNode 的 runAction 造成延迟

Objective-C for 循环到 Swift 3

ios - UIView 重复 animateWithDuration CPU 100%