Изменить цвет текста в текстовом представлении - PullRequest
1 голос
/ 11 марта 2019

У меня есть текстовое представление, которое объединяет несколько строк, каждая из которых разделена новой строкой. Каждая строка также имеет заголовок, который я хотел бы отобразить другим цветом и жирным шрифтом.

Код, который у меня есть, следующий:

let summaryText = "Summary \n"
let summaryAttributes = [NSAttributedString.Key.foregroundColor: UIColor.orange]
let summaryString = NSAttributedString(string: summaryText, attributes:summaryAttributes)

GoalSettingDetailsTextView.attributedText = summaryString + GoalSettingMoreDetailsSummary + "\n\n" + "Notes \n" + GoalSettingMoreDetailsNotes

Здесь вы можете видеть, что я пытался сделать «Резюме» оранжевым. Я также пытался отобразить заголовок «Примечания» в виде обычной строки без каких-либо атрибутов. Эта часть отлично работает. Тем не менее, я получаю ошибку с "summaryString".

Ошибка:

Двоичный оператор '+' нельзя применять к операндам типа 'NSAttributedString' и 'String'

Как мне заставить это работать?

Ответы [ 2 ]

1 голос
/ 11 марта 2019

Вы не можете использовать + для добавления с NSAttributedString.

Создайте NSMutableAttributedString и создайте его.

let attrStr = NSMutableAttributedString(attributedString: summaryString)
attrStr.append(GoalSettingMoreDetailsSummary) // not sure what GoalSettingMoreDetailsSummary is
attrStr.append(NSAttributedString(string: "\n\nNotes \n"))
attrStr.append(GoalSettingMoreDetailsNotes) // not sure what GoalSettingMoreDetailsNotes is

GoalSettingDetailsTextView.attributedText = attrStr

В этом коде предполагается, что GoalSettingMoreDetailsSummary и GoalSettingMoreDetailsNotes имеют тип NSAttributedString. Если они просто String, тогда создайте NSAttributedString из них, как я сделал с литеральной строкой.

0 голосов
/ 16 марта 2019

Взгляните на Престайлер . Вы можете просто написать что-то вроде этого:

Prestyler.defineRule("$", Prestyle.bold, UIColor.red)
label.attributedText = ("$My title$" + nextText).prestyled
...