根据 Swift 中的 UILabel 文本调整 UIView 高度

Posted

技术标签:

【中文标题】根据 Swift 中的 UILabel 文本调整 UIView 高度【英文标题】:Resize UIView height based on UILabel text in Swift 【发布时间】:2016-02-24 07:41:02 【问题描述】:

所以我有一个简单的UIView,其中包含一个UILabel。目前,UIView 的高度是硬编码的,当UILabel 文本足够长以至于内容需要比UIView 提供的高度更高时,这是一个问题。

有没有一种简单的方法来计算UIView 的适当高度,以便显示包含的UILabel 中的所有内容?

谢谢!

【问题讨论】:

自动布局是你的朋友 在这种情况下,自动布局如何帮助我? UILabel 文本的长度不同。 【参考方案1】:

如果您使用自动布局: 您只需要将 UILabel 的前导、尾随、顶部和底部固定到其超级视图(前导、尾随、顶部和底部)。 将numberOfLines 属性设置为0,这意味着您需要多少。 现在您可以决定将 UIlabel 实例的宽度限制为特定数字或设置preferredMaxLayoutWidth,基本上您是说如果文本大于此宽度,您希望标签创建另一行。 现在是布局的魔力,每个视图都有一个intrinsicContentSize 属性,在UILabel 上它对应于文本占用的大小。这使得UILabel“推动”其超级视图边界以适应其内容大小。 当然,superview 不能有任何高度限制。

如果您不使用自动布局: 设置文本后,您可以通过设置固定宽度和高度CGFLOAT_MAX 来发送标签- (CGSize)sizeThatFits:(CGSize)size 方法,它将返回全文占用的大小,因此您可以相应地设置超级视图框架。

【讨论】:

太棒了!非常感谢。这节省了我的时间!! @Andrea,兄弟你能看看我的问题***.com/questions/46034278/…吗?

以上是关于根据 Swift 中的 UILabel 文本调整 UIView 高度的主要内容,如果未能解决你的问题,请参考以下文章

Swift - UILabel 自动调整为文本长度

具有大小类的自调整 UITableViewCells 中的多行 UILabel - iOS 8 和 Swift

根据 JSON 文件中的内容文本调整带有 UILabel 的自定义单元格的大小

根据 UILabel 文本和图像自动调整单元格大小,例如聊天

禁用 UILabel、UIText 等的自动调整字体。在 iOS/Swift 中?

根据文本调整 UILabel 高度