我已经尝试了几个小时来找到boundingRect我所拥有的UILabel中的字符串,但似乎没有任何工作.
据我所知,boundingRect返回标签中实际文本的大小,而不是标签的大小或类似的大小.这是真的,对吗?
我有一个UILabel被调用的messageLabel包含一些文本,包含无限数量的行.
我现在的代码是这样的:
let labelRect = (message as NSString).boundingRect(with: messageLabel.frame.size,
options: .usesLineFragmentOrigin,
attributes: [NSFontAttributeName : messageLabel.font],
context: nil)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这为我的文本返回了完全错误的维度.
在多行UILabel中返回文本尺寸的正确方法是什么?
使用:
let sizeToFit = CGSize(width: messageLabel.frame.size.width,
height: CGFloat.greatestFiniteMagnitude)
let textSize = messageLabel.sizeThatFits(sizeToFit)
Run Code Online (Sandbox Code Playgroud)
无论如何,你做它的方式也应该工作(你可以在游乐场看到两个函数返回相同的大小):

我已经在操场上添加了一个示例视图,因此您可以看到,标签有黑色边框,文本适合内部,并且小于标签.使用两者sizeToFit和boundingRect方法都可以正确计算大小(但boundingRect不返回舍入值).我使用这个计算的大小在文本下创建一个绿色背景视图,它适合它.