首页 文章

UILabel找到适合宽度的高度

提问于
浏览
0

我有一个 UILabel ,我需要有一个特定的文字大小和框架宽度(匹配屏幕宽度) . 我希望能够设置标签's height to the minimum height that will fit all of the label'的文本而不切断它 .

我尝试过以下方法:

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参数传递,并获得一个高度,使得标签的文本在给定宽度参数所需的行数上方 . 有可能做这样的事吗?

1 回答

  • 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)
    

相关问题