Проблема, яка у мене виникає, полягає в тому, що я хочу мати змогу змінити textColor певного тексту в TextView. Я використовую об'єднаний рядок і просто хочу, щоб рядки, які я додаю до тексту TextView, просто хочу. Здається, що я хочу використовувати NSMutableAttributedString
, але я не знаходжу жодних ресурсів, як це використовувати в Swift. Що у мене поки що є щось подібне:
let string = "A \(stringOne) with \(stringTwo)"
var attributedString = NSMutableAttributedString(string: string)
textView.attributedText = attributedString
Звідси я знаю, що мені потрібно знайти діапазон слів, які потребують змінити їх текстColor, а потім додати їх до атрибутивного рядка. Що мені потрібно знати, як знайти правильні рядки з attributedString, а потім змінити їх textColor.
Оскільки у мене занадто низький рейтинг, я не можу відповісти на власне запитання, але ось відповідь, яку я знайшов
Я знайшов власну відповідь, перекладаючи з перекладу якогось коду з
Зміна атрибутів підрядів у NSAttributedString
Ось приклад реалізації в Swift:
let string = "A \(stringOne) and \(stringTwo)"
var attributedString = NSMutableAttributedString(string:string)
let stringOneRegex = NSRegularExpression(pattern: nameString, options: nil, error: nil)
let stringOneMatches = stringOneRegex.matchesInString(longString, options: nil, range: NSMakeRange(0, attributedString.length))
for stringOneMatch in stringOneMatches {
let wordRange = stringOneMatch.rangeAtIndex(0)
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.nameColor(), range: wordRange)
}
textView.attributedText = attributedString
Оскільки я хочу змінити textColor з декількох рядків, я зроблю допоміжну функцію для вирішення цього питання, але це працює для зміни textColor.