El problema que tengo es que quiero poder cambiar el color de texto de cierto texto en un TextView. Estoy usando una cadena concatenada y solo quiero las cadenas que agrego al texto de TextView. Parece que lo que quiero usar es NSMutableAttributedString
, pero no encuentro ningún recurso sobre cómo usar esto en Swift. Lo que tengo hasta ahora es algo como esto:
let string = "A \(stringOne) with \(stringTwo)"
var attributedString = NSMutableAttributedString(string: string)
textView.attributedText = attributedString
Desde aquí, sé que necesito encontrar el rango de palabras que deben cambiar su color de texto y luego agregarlas a la cadena atribuida. Lo que necesito saber es cómo encontrar las cadenas correctas del atributoString y luego cambiar su color de texto.
Como tengo una calificación demasiado baja, no puedo responder mi propia pregunta, pero aquí está la respuesta que encontré
Encontré mi propia respuesta traduciendo de la traducción de un código de
Cambiar atributos de subcadenas en una NSAttributedString
Aquí está el ejemplo de implementación en 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
Como quiero cambiar el color de texto de varias cadenas, crearé una función auxiliar para manejar esto, pero esto funciona para cambiar el color de texto.