为什么 NSAttributedString 格式化整个字符串?

撕裂

我有一大段文字,看起来像这样:

这 使用此代码:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

NSAttributedString在字符串末尾更改颜色

来自分类Dev

为什么使用HTML字符串对NSAttributedString的初始调用比后续调用花费的时间长100倍以上?

来自分类Dev

为什么在此多重绑定中忽略我的字符串格式化程序?

来自分类Dev

为什么要构造具有多个字符串文字的字符串?

来自分类Dev

为什么无法获得整个字符串的长度?

来自分类Dev

格式化字符串时,%df代表什么?

来自分类Dev

为什么不将其替换为单选按钮值中的整个字符串?

来自分类Dev

为什么String.Format给出此字符串的inputString未格式化错误

来自分类Dev

为什么使用“ G”标准格式字符串格式化Double不会返回完整字符串?

来自分类Dev

为什么unset()会改变json_encode格式化字符串的方式?

来自分类Dev

为什么必须在Java正则表达式中指定整个字符串?

来自分类Dev

为什么取消引用指向字符串(char数组)的指针会返回整个字符串,而不是第一个字符?

来自分类Dev

为什么string :: begin()在立即窗口中输出整个字符串

来自分类Dev

为什么序列化我获得一个字符串的QuerySet?

来自分类Dev

为什么这个字符串是不可变的?

来自分类Dev

如何通过单个字符将字符串对齐UILabel / NSAttributedString

来自分类Dev

格式化字符串时,%df代表什么?

来自分类Dev

这些日期字符串的格式化字符串将是什么?

来自分类Dev

为什么此代码不只返回“ S”,而是整个字符串减去“ S”

来自分类Dev

为什么String.Format给出此字符串的inputString未格式化错误

来自分类Dev

为什么sscanf跳过每个字符串的前4个字符?

来自分类Dev

为什么我的strcpy()不覆盖整个字符串并保留最后一个char []中的字符?

来自分类Dev

这个字符串的日期格式是什么?

来自分类Dev

在matlab中返回整个字符串的可能方法是什么

来自分类Dev

为什么使用 getchar 读取和打印整个字符串?

来自分类Dev

获得“TypeError:并非所有参数都在字符串格式化期间转换”,不太确定为什么

来自分类Dev

为什么我无法在 Java/Kotlin 中格式化字符串

来自分类Dev

为什么 C# 在格式化期间会截断字符串精度?

来自分类Dev

为什么这个字符串不是日期

Related 相关文章

  1. 1

    NSAttributedString在字符串末尾更改颜色

  2. 2

    为什么使用HTML字符串对NSAttributedString的初始调用比后续调用花费的时间长100倍以上?

  3. 3

    为什么在此多重绑定中忽略我的字符串格式化程序?

  4. 4

    为什么要构造具有多个字符串文字的字符串?

  5. 5

    为什么无法获得整个字符串的长度?

  6. 6

    格式化字符串时,%df代表什么?

  7. 7

    为什么不将其替换为单选按钮值中的整个字符串?

  8. 8

    为什么String.Format给出此字符串的inputString未格式化错误

  9. 9

    为什么使用“ G”标准格式字符串格式化Double不会返回完整字符串?

  10. 10

    为什么unset()会改变json_encode格式化字符串的方式?

  11. 11

    为什么必须在Java正则表达式中指定整个字符串?

  12. 12

    为什么取消引用指向字符串(char数组)的指针会返回整个字符串,而不是第一个字符?

  13. 13

    为什么string :: begin()在立即窗口中输出整个字符串

  14. 14

    为什么序列化我获得一个字符串的QuerySet?

  15. 15

    为什么这个字符串是不可变的?

  16. 16

    如何通过单个字符将字符串对齐UILabel / NSAttributedString

  17. 17

    格式化字符串时,%df代表什么?

  18. 18

    这些日期字符串的格式化字符串将是什么?

  19. 19

    为什么此代码不只返回“ S”,而是整个字符串减去“ S”

  20. 20

    为什么String.Format给出此字符串的inputString未格式化错误

  21. 21

    为什么sscanf跳过每个字符串的前4个字符?

  22. 22

    为什么我的strcpy()不覆盖整个字符串并保留最后一个char []中的字符?

  23. 23

    这个字符串的日期格式是什么?

  24. 24

    在matlab中返回整个字符串的可能方法是什么

  25. 25

    为什么使用 getchar 读取和打印整个字符串?

  26. 26

    获得“TypeError:并非所有参数都在字符串格式化期间转换”,不太确定为什么

  27. 27

    为什么我无法在 Java/Kotlin 中格式化字符串

  28. 28

    为什么 C# 在格式化期间会截断字符串精度?

  29. 29

    为什么这个字符串不是日期

热门标签

归档