我正在使用下一个方法来更改textView中几个单词的颜色:
+(void)changeColorToTextObject : (UITextView *)textView ToColor : (UIColor *)color FromLocation : (int)location length : (int)length
{
NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithAttributedString: textView.attributedText];
[text addAttribute:NSForegroundColorAttributeName value:color range:NSMakeRange(location, length)];
[textView setAttributedText: text];
}
它看起来像这样:
但是当我为这段文字添加新值时,颜色就消失了。
myTextView.text = [myTextView.text stringByAppendingString:newStr];
它看起来像这样:
如何使用新字符串保持以前的颜色?
答案 0 :(得分:1)
而不是myTextView.text = [myTextView.text stringByAppendingString:newStr];
使用:
NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithAttributedString:myTextView.attributedText];
NSAttributedString *newAttrString = [[NSAttributedString alloc] initWithString:newStr];
[text appendAttributedString:newAttrString];
myTextView.attributedText = text;
您的代码无效,因为您要为text
的{{1}}属性分配新字符串。 myTextView
只是一个text
属性,因此无法显示可以使用NSString
显示的颜色或其他内容。
请注意,编写NSAttributedString
会调用属性 myTextView.attributedText = text;
的 setter ,因此100%等同于attributedText
,另一种表示法。