这一定是一件容易的事,但我无法弄清楚。
我有一个NSMutableAttributedString,例如,其中有“This is a test”。我想将“测试”一词涂成蓝色,为此:
NSMutableAttributedString *coloredText = [[NSMutableAttributedString alloc] initWithString:@"This is a test"];
[coloredText addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(10,4)];
那很好。但是现在,对于任何在“测试”之后键入的内容,我都希望将其文本颜色重新设置为黑色。
如果我做:
[coloredText addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(coloredText.string.length, 1)];
我得到一个objectAtIndex:effectiveRange:超出范围错误。可能是因为范围超出了字符串的长度。
如果我做:
[coloredText addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(coloredText.string.length, 0)];
错误消失了,但是在单词“test”之后键入仍然是蓝色。
当字符串位于字符串的末尾时,如何在插入点设置当前颜色?
为任何输入加油。
最佳答案
如果文本更改,则需要重新计算属性,因为它们的有效范围不会随文本的长度自动更改。