UILabel 找到适合宽度的高度

Posted

技术标签:

【中文标题】UILabel 找到适合宽度的高度【英文标题】:UILabel find height that fits width 【发布时间】:2018-12-08 21:59:59 【问题描述】:

我有一个UILabel,我需要有一个特定的文本大小和框架宽度(与屏幕宽度相匹配)。我希望能够将标签的高度设置为适合所有标签文本的最小高度,而不会将其切断。

我尝试了以下方法:

let label = UILabel()
label.text = longText
label.numberOfLines = 0
label.sizeToFit()

但如果longText 类似于"This string is really long, longer than the screen width",这将不起作用,因为sizeToFit 将整个字符串放在一行中,当到达屏幕宽度时,文本会被... 截断。

然后我在调用sizeToFit 后尝试设置标签的宽度以匹配屏幕宽度。这让换行但不调整标签的高度,所以字符串在第一行之后仍然被切断。

另外,设置label.adjustsFontSizeToFitWidth = true 也不起作用,因为我需要标签具有特定的字体大小。

我想要的是某种函数,例如label.minimumHeightForWidth:,我可以将UIScreen.main.bounds.width 作为宽度参数传递,并获得一个高度,该高度将在给定宽度的情况下根据需要在尽可能多的行上适合标签的文本范围。有可能做这样的事情吗?

【问题讨论】:

【参考方案1】:

你可以试试

let fixedWidth = UIScreen.main.bounds.width 
let newSize = lbl.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
lbl.size = CGSize(width:fixedWidth, height: newSize.height)

【讨论】:

以上是关于UILabel 找到适合宽度的高度的主要内容,如果未能解决你的问题,请参考以下文章

如何根据标签可用的高度调整 UILabel 字体大小

具有比例宽度和文本驱动高度的动态 UILabel

如何调整字体大小以适应 UILabel 的高度和宽度

当大小不成比例时如何在 UILabel 中适合文本

UILabel 不调整高度以适合文本

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