首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iOS中找到包含多种字体的高度attributedString?

如何在iOS中找到包含多种字体的高度attributedString?
EN

Stack Overflow用户
提问于 2018-06-29 14:28:07
回答 1查看 62关注 0票数 0

假设您有一个包含一些随机数量的不同字体的NSAttributedString。对于普通文本,您可以使用

代码语言:javascript
复制
boundingRect(
    with size: CGSize, 
    options: NSStringDrawingOptions = [], 
    attributes: [NSAttributedStringKey : Any]? = nil, 
    context: NSStringDrawingContext?
)

来计算它的高度。

但是,如何计算包含多种字体的NSAttributedString呢?例如,位置0到5具有UIFont.systemFont(with: 15),位置6到10具有UIFont.systemFont(with: 17),位置11到16具有UIFont.systemFont(with: 5)

由于boundingRect方法无法识别哪些属性适用于什么范围,因此无法使用它。我还能做些什么来实现这一点?

EN

回答 1

Stack Overflow用户

发布于 2021-10-19 15:41:24

我试图找到类似的解决方案,但没有一个例子不能帮助我。在我的例子中,我使用了包装HTML文本的UITextView,并且我需要根据内容计算textView的高度。该HTML文本包含一些字符串,不同的样式和字体。以下是我实现的一个解决方案,或者可能是一个技巧:

代码语言:javascript
复制
func calculateHeight(withConstrainedWidth width: CGFloat, string: NSAttributedString) -> CGFloat {
    let textView: UITextView = UITextView(frame: CGRect(x: 0, y: 0, width: width, height: .greatestFiniteMagnitude))
    textView.attributedText = string
    textView.sizeToFit()
    textView.layoutIfNeeded()
    return textView.contentSize.height
}

我不建议您在复杂的布局中使用此代码,例如在UICollectionViewCell中,如果某些内容有很多项的话。它会影响应用程序的性能。但对于单次检查,它可能是相关的。也许这会有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51095550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档