将字体添加到缺少 .font 属性的 NSMutableAttributedString
Add font to NSMutableAttributedString where .font attribute is missing
我想将特定字体应用到未应用 .font
属性的 NSMutableAttributedString
。我怎样才能做到这一点?
我尝试枚举包含字体的属性并提取范围,但我有点迷失了查找不包含字体属性的范围的复杂性,因为我认为我必须处理交叉点或可能的未知场景。有简单的方法吗?
到目前为止我做了什么:
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
是您的 NSMutableAttributedString
,newFont
是您要应用的字体。
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)
}
我想将特定字体应用到未应用 .font
属性的 NSMutableAttributedString
。我怎样才能做到这一点?
我尝试枚举包含字体的属性并提取范围,但我有点迷失了查找不包含字体属性的范围的复杂性,因为我认为我必须处理交叉点或可能的未知场景。有简单的方法吗?
到目前为止我做了什么:
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
是您的 NSMutableAttributedString
,newFont
是您要应用的字体。
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)
}