Как изменить цвет кольца фокусировки?

В функции рисования NSImageView я хочу установить свой собственный цвет кольца фокусировки, а не синий цвет по умолчанию. Я пробовал следующий код

NSSetFocusRingStyle(NSFocusRingOnly);
[[NSColor redColor] setStroke];
NSRectFill([self bounds]);

Но цвет по-прежнему синий по умолчанию. Как я могу решить эту проблему?

обновление: класс NSShadow помогает мне добавить кольцо фокусировки. Легко изменить цвет тени.

NSShadow *shadow = [[[NSShadow alloc] init] autorelease];
[shadow setShadowBlurRadius:5];
[shadow setShadowOffset:NSMakeSize(0.0, 0.0)];
[shadow setShadowColor:[NSColor redColor]];
[shadow set];

Я кодирую это в функции рисования NSImageView.


person gohamgx    schedule 17.04.2013    source источник


Ответы (1)


Единственный способ решить эту «проблему» — самому нарисовать кольцо фокусировки. Код NSFocusRingStyle предназначен для упрощения рисования кольца фокусировки в выбранном пользователем стиле фокусировки, что включает в себя возможность установки цвета кольца фокусировки.

По замыслу вы не можете легко изменить цвет кольца фокусировки, поскольку оно является частью темы ОС и, следовательно, должно находиться под контролем пользователя (согласно HIG). Если у вас есть особый случай, например, необходимость адаптивного окрашивания кольца фокусировки на основе содержимого изображения, вам придется создать собственное кольцо фокусировки с нуля.

person gaige    schedule 18.04.2013
comment
Я нашел это в соответствии с вами, и в функции рисования NSImageView я использовал класс NSShadow, чтобы выполнить это. Это выглядело так же с кольцом фокусировки. Спасибо. - person gohamgx; 19.04.2013