gpt4 book ai didi

swift - 带有 NSAttributedString 的 UILabel 返回不正确的 boundingRect 值

转载 作者:搜寻专家 更新时间:2023-11-01 05:35:27 25 4
gpt4 key购买 nike

func calculateSizeFor(label:UILabel, attributedText: NSAttributedString) -> CGSize {
let constraint:CGSize = CGSize(width: label.frame.size.width,
height: .greatestFiniteMagnitude)
let context:NSStringDrawingContext = NSStringDrawingContext()
let boundingBox = attributedText.boundingRect(with: constraint,
options: [.usesLineFragmentOrigin,
.usesFontLeading],
context: context)
return boundingBox.size
}

高度值总是大于实际高度,导致 UILabel 的顶部和底部边缘有额外的填充。而当我尝试为纯文本计算 boundingRect 时,返回的值始终是准确的。

我需要预先计算标签高度,以便将其显示为 UICollectionViewCell 组件。

我在这里遗漏了什么吗?还有其他方法可以实现吗?

最佳答案

同样的问题,attr字符串的末尾可能有一个'\n',由诸如

之类的标签引起的,我认为,通过删除最后一个字符解决:

let mattrStr: NSMutableAttributedString = NSMutableAttributedString(attributedString: yourAttrStr)
if let lc = attrStr.string.last, lc == "\n" {
mattrStr.deleteCharacters(in: NSRange(location: mattrStr.length - 1, length: 1))
}

关于swift - 带有 NSAttributedString 的 UILabel 返回不正确的 boundingRect 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41701932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com