作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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 调试选项时,我得到了这个:
如您所见,我的宽度是正确的(我强制它)但我的高度不正确,我不知道为什么。
感谢和问候,埃里克
最佳答案
对于多行仅使用 .UsesLineFragmentOrigin
。
关于ios - swift : boundingRectWithSize return wrong height for a multiline label,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39066214/
我是一名优秀的程序员,十分优秀!