我想要改变UITextView中特定文本的颜色,该文本与数组的索引匹配。我能够稍微修改这个 答案 但不幸的是,每个匹配短语的文本颜色只会改变一次。
var chordsArray = ["Cmaj", "Bbmaj7"]
func getColoredText(textView: UITextView) -> NSMutableAttributedString {
let text = textView.text
let string:NSMutableAttributedString = NSMutableAttributedString(string: text)
let words:[String] = text.componentsSeparatedByString(" ")
for word in words {
if (chordsArray.contains(word)) {
let range:NSRange = (string.string as NSString).rangeOfString(word)
string.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: range)
}
}
chords.attributedText = string
return string
}
结果
NSAttributedString
是你的答案。使用带有颜色属性的部分来实现着色,并将其组合为一个字符串。将其余部分放入普通的属性字符串中。现在将这两个属性字符串合并起来。 - NSNooboptional func textViewDidEndEditing(_ textView: UITextView)
方法中调用getColoredText
方法。另外,chords 是你的 textView 的名称吗? - NSNoobUIControlEventEditingChanged
。我认为你们应该像这样写:UIControlEvents.EditingChanged
。 - NSNoob