Il problema che sto riscontrando è che voglio essere in grado di cambiare il textColor di un determinato testo in un TextView. Sto usando una stringa concatenata e voglio solo le stringhe che sto aggiungendo al testo di TextView. Sembra che quello che voglio usare sia NSMutableAttributedString
, ma non trovo alcuna risorsa su come usarlo in Swift. Quello che ho finora è qualcosa del genere:
let string = "A \(stringOne) with \(stringTwo)"
var attributedString = NSMutableAttributedString(string: string)
textView.attributedText = attributedString
Da qui so che ho bisogno di trovare l'intervallo di parole che devono cambiare il loro textColor e quindi aggiungerle alla stringa attribuita. Quello che ho bisogno di sapere è come trovare le stringhe corrette da attributeString e quindi modificare il loro textColor.
Dato che ho una valutazione troppo bassa non posso rispondere alla mia domanda, ma ecco la risposta che ho trovato
Ho trovato la mia risposta traducendo dalla traduzione del codice da
Modificare gli attributi delle sottostringhe in un NSAttributedString
Ecco l'esempio di implementazione in 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
Dato che voglio cambiare textColor di più stringhe, creerò una funzione di supporto per gestirlo, ma funziona per cambiare textColor.