我想更改NSTextView中所有文本的颜色。 目前,我有代码这样做:
NSMutableDictionary* fontAttributes = [[NSMutableDictionary alloc] init];
[fontAttributes setObject: newColour forKey:NSForegroundColorAttributeName];
[self setTypingAttributes:fontAttributes];
...但只会更改设置属性后键入的文本的颜色。
是否有一种简单的方法可以更改视图中所有文本的颜色,而不仅仅是在插入点处输入的内容?
答案 0 :(得分:13)
[textView setTextColor:newColor];
您可能没有注意到该方法,因为它实际上是NSText的一部分,NSTextView从该NSText继承。
答案 1 :(得分:2)
您需要设置文本视图的NSForegroundColorAttributeName
对象的NSTextStorage
属性:
NSTextStorage* textViewContent = [textView textStorage];
//get the range of the entire run of text
NSRange area = NSMakeRange(0, [textStorage length]);
//remove existing coloring
[textStorage removeAttribute:NSForegroundColorAttributeName range:area];
//add new coloring
[textStorage addAttribute:NSForegroundColorAttributeName
value:[NSColor yellowColor]
range:area];
答案 2 :(得分:0)
这是使用文本存储快速完成此操作的方法。您可以使用此方法为文本视图设置任何属性
if let textStorage = textView.textStorage {
let area = NSRange(location: 0, length: textStorage.length)
textStorage.removeAttribute(.foregroundColor, range: area)
textStorage.addAttribute(.foregroundColor, value: NSColor.yellow, range: area)
}