Как я могу установить цвет всего текста в NSTextView (а не просто текст, набранный впоследствии) - PullRequest
4 голосов
/ 16 ноября 2011

Я хочу изменить цвет ВСЕГО текста в NSTextView.В настоящее время у меня есть код, который делает это:

NSMutableDictionary* fontAttributes = [[NSMutableDictionary alloc] init];
[fontAttributes setObject: newColour forKey:NSForegroundColorAttributeName];
[self setTypingAttributes:fontAttributes];  

... но это только меняет цвет текста, набираемого после установки атрибутов.

Есть ли простой способ изменить цветвсего текста в представлении, а не только того, что вводится в inserttionPoint?

Ответы [ 2 ]

13 голосов
/ 16 ноября 2011
[textView setTextColor:newColor];

Возможно, вы не заметили этот метод, потому что он на самом деле является частью NSText, от которого наследуется NSTextView.

2 голосов
/ 16 ноября 2011

Вам необходимо установить атрибут 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];
...