Problem, który mam, polega na tym, że chcę mieć możliwość zmiany textColor określonego tekstu w TextView. Używam połączonego ciągu i chcę tylko ciągów, które dołączam do tekstu TextView. Wygląda na to, że chcę użyć NSMutableAttributedString
, ale nie znajduję żadnych zasobów, jak to wykorzystać w Swift. Do tej pory mam coś takiego:
let string = "A \(stringOne) with \(stringTwo)"
var attributedString = NSMutableAttributedString(string: string)
textView.attributedText = attributedString
Stąd wiem, że muszę znaleźć zakres słów, które wymagają zmiany ich textColor, a następnie dodać je do przypisanego ciągu. Muszę wiedzieć, jak znaleźć prawidłowe ciągi z atrybutu attributeString, a następnie zmienić ich textColor.
Ponieważ mam zbyt niską ocenę, nie mogę odpowiedzieć na własne pytanie, ale oto odpowiedź, którą znalazłem
Znalazłem własną odpowiedź, tłumacząc z tłumaczenia jakiegoś kodu z
Zmień atrybuty podciągów w NSAttributedString
Oto przykład implementacji w 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
Ponieważ chcę zmienić textColor wielu ciągów, utworzę funkcję pomocniczą, aby to obsłużyć, ale to działa w przypadku zmiany textColor.