#swift #textview #nsattributedstring
#swift #textview #nsattributedstring
Вопрос:
У меня есть textview, который объединяет несколько строк, каждая из которых разделена новой строкой. У каждой строки также есть заголовок, который я бы хотел отобразить другим цветом и выделить жирным шрифтом.
Код, который у меня есть на данный момент, выглядит следующим образом:
let summaryText = "Summary n"
let summaryAttributes = [NSAttributedString.Key.foregroundColor: UIColor.orange]
let summaryString = NSAttributedString(string: summaryText, attributes:summaryAttributes)
GoalSettingDetailsTextView.attributedText = summaryString GoalSettingMoreDetailsSummary "nn" "Notes n" GoalSettingMoreDetailsNotes
Здесь вы можете видеть, что я попытался сделать «Сводку» оранжевой. Я также попытался отобразить заголовок «Примечания» как обычную строку без каких-либо атрибутов. Эта часть работает нормально. Однако я получаю ошибку с «summaryString».
Ошибка заключается:
Двоичный оператор ‘ ‘ не может быть применен к операндам типа ‘NSAttributedString’ и ‘String’
Как я могу заставить это работать?
Комментарии:
1. Используйте NSMutableAttributedString и его свойство append.
Ответ №1:
Вы не можете использовать
для добавления с NSAttributedString
.
Создайте NSMutableAttributedString
и создайте его.
let attrStr = NSMutableAttributedString(attributedString: summaryString)
attrStr.append(GoalSettingMoreDetailsSummary) // not sure what GoalSettingMoreDetailsSummary is
attrStr.append(NSAttributedString(string: "nnNotes n"))
attrStr.append(GoalSettingMoreDetailsNotes) // not sure what GoalSettingMoreDetailsNotes is
GoalSettingDetailsTextView.attributedText = attrStr
Этот код предполагает, что GoalSettingMoreDetailsSummary
и GoalSettingMoreDetailsNotes
имеют тип NSAttributedString
. Если они просто, String
то создайте NSAttributedString
из них, как я сделал с буквенной строкой.
Ответ №2:
Взгляните на Prestyler. Вы можете просто написать что-то вроде этого:
Prestyler.defineRule("$", Prestyle.bold, UIColor.red)
label.attributedText = ("$My title$" nextText).prestyled