我有一大段文字,看起来像这样:
detail2TextView.text = textAnhorig.chapter12
文本样式设置为 iOS 的默认文本样式,称为body
.
使用代码,我成功地将引用的文本格式化为斜体。这是代码:
//function that format part of text
func formatfunc(chapter: String, boldStart: Int, boldLength: Int, italicsStart: Int, italicsLength: Int) -> NSAttributedString {
let bold = UIFont.boldSystemFont(ofSize: 17)
let italics = UIFont.italicSystemFont(ofSize: 17)
let attributedString = NSMutableAttributedString.init(string: chapter)
attributedString.addAttribute(.font, value: bold, range: NSRange.init(location: boldStart, length: boldLength))
attributedString.addAttribute(.font, value: italics, range: NSRange.init(location: italicsStart, length: italicsLength))
return attributedString
}
//calling function
let formated = textAnhorig.formatfunc(chapter: textAnhorig.chapter12, boldStart: 0, boldLength: 0, italicsStart: 0, italicsLength: 85)
//presenting edited text
detail2TextView.attributedText = formated
这工作正常,但问题是字符串的其余部分由于某种原因被格式化为完全不同的样式 - 更小并且可能使用另一种字体(无法确定)。你可以在这里看到结果:
发生了什么,我如何阻止它发生并保持文本的其余部分保持原样?
您应该首先为整个字符串设置基本字体,然后将粗体和斜体字体应用于所需的范围。
func formatfunc(chapter: String, boldStart: Int, boldLength: Int, italicsStart: Int, italicsLength: Int) -> NSAttributedString {
let bold = UIFont.boldSystemFont(ofSize: 17)
let italics = UIFont.italicSystemFont(ofSize: 17)
let attributedString = NSMutableAttributedString(string: chapter, attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 17)])
attributedString.addAttribute(.font, value: bold, range: NSRange(location: boldStart, length: boldLength))
attributedString.addAttribute(.font, value: italics, range: NSRange(location: italicsStart, length: italicsLength))
return attributedString
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句