Le problème que je rencontre est que je veux pouvoir changer le textColor de certains textes dans un TextView. J'utilise une chaîne concaténée et je veux juste les chaînes que j'ajoute dans le texte du TextView. Il semble que ce que je veux utiliser NSMutableAttributedString
, mais je ne trouve aucune ressource sur la façon de l'utiliser dans Swift. Ce que j'ai jusqu'à présent, c'est quelque chose comme ça:
let string = "A \(stringOne) with \(stringTwo)"
var attributedString = NSMutableAttributedString(string: string)
textView.attributedText = attributedString
À partir de là, je sais que je dois trouver la plage de mots dont la couleur de texte doit être modifiée, puis les ajouter à la chaîne attribuée. Ce que j'ai besoin de savoir, c'est comment trouver les chaînes correctes à partir de la chaîne attribuée, puis modifier leur textColor.
Comme j'ai une note trop basse, je ne peux pas répondre à ma propre question, mais voici la réponse que j'ai trouvée
J'ai trouvé ma propre réponse en traduisant en traduisant du code de
Modifier les attributs des sous-chaînes dans un NSAttributedString
Voici l'exemple d'implémentation dans 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
Puisque je souhaite changer le textColor de plusieurs chaînes, je vais créer une fonction d'assistance pour gérer cela, mais cela fonctionne pour changer le textColor.