O problema que estou tendo é que quero ser capaz de alterar o textColor de determinado texto em um TextView. Estou usando uma string concatenada e só quero as strings que estou acrescentando ao texto do TextView. Parece que o que eu quero usar é NSMutableAttributedString
, mas não estou encontrando recursos de como usar isso no Swift. O que eu tenho até agora é algo assim:
let string = "A \(stringOne) with \(stringTwo)"
var attributedString = NSMutableAttributedString(string: string)
textView.attributedText = attributedString
A partir daqui, sei que preciso encontrar o intervalo de palavras que precisam ter seu textColor alterado e, em seguida, adicioná-los à string atribuída. O que eu preciso saber é como encontrar as strings corretas de attributeString e, em seguida, alterar sua textColor.
Como eu tenho uma classificação muito baixa, não posso responder minha própria pergunta, mas aqui está a resposta que encontrei
Eu encontrei minha própria resposta traduzindo da tradução de algum código de
Alterar atributos de substrings em um NSAttributedString
Aqui está o exemplo de implementação em 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
Já que estou querendo mudar o textColor de várias Strings, farei uma função auxiliar para lidar com isso, mas isso funciona para mudar o textColor.