UILabel找到适合宽度的高度

时间:2018-12-08 21:59:59

标签: ios swift uilabel

我有一个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作为width参数,并获得一个高度,该高度将根据需要在多行上适合标签的文本使用给定的width参数。可以这样做吗?

1 个答案:

答案 0 :(得分:2)

您可以尝试

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