我有一个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参数。可以这样做吗?
答案 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)