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

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

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

Я не могу понять, почему colorNamed не работает в этом случае. Любые идеи?

Спасибо.


person Eric    schedule 03.11.2018    source источник


Ответы (2)


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

person Eric    schedule 05.11.2018

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

 NSAppearance.currentAppearance = self.effectiveAppearance;

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

person pointum    schedule 04.11.2018