微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将字体添加到缺少 .font 属性的 NSMutableAttributedString

如何解决将字体添加到缺少 .font 属性的 NSMutableAttributedString

我想将特定字体应用于未应用 NSMutableAttributedString 属性.font。我怎么能做到这一点? 我尝试枚举包含字体的属性提取范围,但我有点迷失于查找不包含字体属性的范围的复杂性,因为我认为我必须处理交叉点或可能的未知场景。有没有简单的方法来做到这一点? 到现在为止我做了什么:

        var allRangesWithFont = [NSRange]()
        let stringRange = NSRange(location: 0,length: length)
        
        beginEditing()
        enumerateAttribute(.font,in: stringRange,options: .longestEffectiveRangeNotrequired) { (value,range,stop) in
            
            if let f = value as? UIFont {
                allRangesWithFont.append(range)
            }
        }

解决方法

改变你的思维方式,检查字体是否存在,直接应用你的新字体。

attrStr 是您的 NSMutableAttributedStringnewFont 是您要应用的字体。

let newFont = UIFont.italicSystemFont(ofSize: 15)
attrStr.enumerateAttribute(.font,in: NSRange(location: 0,length: attrStr.length),options: []) { value,subrange,pointeeStop in
    guard value == nil else { return }
    attrStr.addAttribute(.font,value: newFont,range: subrange)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。