gpt4 book ai didi

ios - swift : boundingRectWithSize return wrong height for a multiline label

转载 作者:行者123 更新时间:2023-11-28 08:29:45 53 4
gpt4 key购买 nike

我在 String 类上使用扩展来获得在多行标签中显示我的字符串所需的高度。

extension String {
func heightWithConstrainedWidth(width: CGFloat, font: UIFont) -> CGFloat {
let constraintRect = CGSize(width: width, height: CGFloat.max)

let option = NSStringDrawingOptions.UsesFontLeading.union(.UsesLineFragmentOrigin)

let boundingBox = self.boundingRectWithSize(constraintRect, options: option, attributes: [NSFontAttributeName: font], context: nil)
print("ex width \(boundingBox.width)")
print("ex height \(boundingBox.height)")
return boundingBox.height
}
}

我在 heightForRowAtIndexPath 中调用它

let myRandomString = "My baby looks like she's ashamed and wants to apologise for something bad she did."
let labelWidth = UIScreen.mainScreen().bounds.width-16
let labelHeight = myRandomString.heightWithConstrainedWidth(labelWidth,font: UIFont.boldSystemFontOfSize(17))

然后我得到:

ex width 359.0
ex height 40.57421875

但是当我使用 xcode 的 View 调试选项时,我得到了这个: enter image description here

这就是我的 UILabel 的设置方式: enter image description here

如您所见,我的宽度是正确的(我强制它)但我的高度不正确,我不知道为什么。

感谢和问候,埃里克

最佳答案

对于多行仅使用 .UsesLineFragmentOrigin

关于ios - swift : boundingRectWithSize return wrong height for a multiline label,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39066214/

53 4 0
文章推荐: javascript - Tapestry 区域更新后,IE 中的 iFrame OnLoad 事件未触发
文章推荐: javascript - HTML & CSS