Темный режим: NSColor.colorNamed не возвращает правильный цвет в определенных методах

У меня вообще работает colorNamed, но я пытаюсь вызвать его изнутри NSTableViewRow.drawSeparatorInRect:и он всегда возвращает цвет в светлом виде, даже если система находится в темном режиме.

- (void)drawSeparatorInRect:(NSRect)dirtyRect { [[NSColor colorNamed:@"ColorTransactionsGridLine"] set]; ... }

Не могу понять почему colorNamed не работает в этом случае. Есть идеи?

Благодарю.

2 ответа

Я понял это. Оказывается, что родительское представление имеет жестко запрограммированный вид, поэтому подпредставление наследует этот вид, а не системный. После изменения внешнего вида на "наследовать" в родительском представлении (ях), colorNamed возвращает правильный цвет.

Попробуйте добавить это перед кодом рисования:

 NSAppearance.currentAppearance = self.effectiveAppearance;

Или, в качестве диагностической меры, установите точку останова в своем коде чертежа и проверьте состояние этих свойств в отладчике.

Другие вопросы по тегам