Почему NSAttributedString форматирует всю мою строку? - PullRequest
0 голосов
/ 29 сентября 2018

У меня большой текст, который выглядит следующим образом:

this с использованием этого кода:

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

Это работает нормально, но проблема в том, что остальная часть строки по какой-то причине отформатирована в совершенно другом стиле - меньше и, возможно, с другим шрифтом (не может на самом делесказать).Вы можете увидеть результат здесь:

here.

Что произошло и как я могу предотвратить это и просто сохранить оставшуюся часть текста такой, какой она была

1 Ответ

0 голосов
/ 29 сентября 2018

Сначала необходимо установить базовый шрифт для всей строки, затем применить жирный и курсивный шрифт к желаемому диапазону.

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
}
...