0

我正在使用下一个方法来更改 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];

它看起来像这样:

在此处输入图像描述

如何使用新字符串保持以前的颜色?

4

1 回答 1

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. 只是一个属性,因此无法显示颜色或其他可以使用.myTextViewtextNSStringNSAttributedString

请注意,写作myTextView.attributedText = text;调用属性的设置器,因此 100% 等效于,只是一种不同的表示法。 attributedText[myTextView setAttributedText:text];

于 2015-03-24T15:02:19.770 回答