Я хочу изменить цвет текста определенного текста в UITextView, который соответствует индексу массива. Я смог немного изменить этот answer, но, к сожалению, цвет текста каждой соответствующей фразы изменяется только один раз.UITextView изменить цвет текста определенного текста
var chordsArray = ["Cmaj", "Bbmaj7"]
func getColoredText(textView: UITextView) -> NSMutableAttributedString {
let text = textView.text
let string:NSMutableAttributedString = NSMutableAttributedString(string: text)
let words:[String] = text.componentsSeparatedByString(" ")
for word in words {
if (chordsArray.contains(word)) {
let range:NSRange = (string.string as NSString).rangeOfString(word)
string.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: range)
}
}
chords.attributedText = string
return string
}
Результат
'NSAttributedString' - ваш ответ. Используйте цветные атрибуты для части, которую вы хотите покрасить, и сделайте ее одной строкой. Положите остальную часть в строку с прописными буквами. Теперь объедините два атрибута. – NSNoob
@NSNoob не хочет беспокоить вас, но не могли бы вы привести пример? Мне трудно понять, как разделить содержащийся текст и простой текст на две разные NSAttrubttedStrings. – kye
Вы редактируете textView? Я вижу клавиатуру там? Итак, я предполагаю, что вы хотите покрасить текст всякий раз, когда пользователь вводит те ключевые слова, определенные в массиве аккордов? Просто заметила клавиатуру, поэтому я предполагаю, что вы действительно хотите, что я только что описал? Перекрашивание прямо на вводе данных? – NSNoob