2014-10-01 6 views
7

Я использую NSPopover, и когда я меняю цвет док-станции на темный (новая функция Yosemite), некоторые элементы на мой взгляд инвертируют их цвет.NSPopover цвет инвертировать в Yosemite темный цвет

Например, некоторые ярлыки меняются от черного к серому или меняются фоновые изменения в текстовом поле от белого до черного. И если у меня есть вид с белым фоном, теперь он меняется на размытый темный эффект.

Так два вопроса:

  1. Могу ли я отменить это поведение и заставить UI действовать, как и в обычном режиме?

  2. Есть ли какие-либо правила здесь, какой элемент инвертирует их цвет?

Потому что кажется, что некоторые элементы меняются, а некоторые нет.

Это мое приложение в Йосемити обычном режиме:

enter image description here

И это в Йосемити темном режиме:

enter image description here

ответ

2

Есть способы сделать это, хотя я бы рекомендовал обнимать его. Не задокументировано, что изменится и как. Но наблюдение покажет вам, что делать. В первую очередь это требует, чтобы вы делали противоположное от выбора. Выбор в использовании элементов интерфейса Appkit как есть, а также использование имен NSColor, предоставляемых как системные цвета, и использование NSVisualEffectView. Это означает, что явным образом откажу вам в необходимости обойти и в основном настроить виды, и это в основном означает установку явных цветов и иногда подклассов. Вы можете выбрать из комплектов HUD и poppers.

+0

Попутчики могут быть ограничены в настройке , Если пользователь включит функцию «Уменьшить прозрачность» в настройках Accessibilty, вы также увидите различия. – uchuugaka

+0

Когда это поведение (инвертирование цвета) происходит? это произойдет для некоторых элементов пользовательского интерфейса в любом окне при переходе в темный режим? или только когда в popover? – Mario

+0

Темный режим. Существует NSNotification, который вы можете наблюдать за этим и изменениями доступности. Новые могут быть отмечены только в примечаниях к выпуску AppKit для 10.10 или в заголовке. Я забываю, какой заголовок. – uchuugaka

10

Это может быть библиотека, вы используете, что вызывает это поведение. Я только что тестировал новый проект, и я не мог сделать черный NSPopover, как бы я ни старался.

Какие библиотеки вы используете? Как вы настроили свой NSPopover?

Возможно, вы могли бы попробовать изменить свойство внешнего вида?

view.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua];

NSView обладает свойством appearance, потому что она соответствует NSAppearanceCustomization.

См. Также NSAppearance.

------------------------

Найдено решение:

self.popover.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua]; 

результат:

+0

Я добавил фотографию, как вы можете видеть, фон элемента становится черным. – Mario

+0

Я добавил еще одно изображение своего приложения, не выбрав Yosemite dark mode – Mario

+0

Я получил его на работу, поэтому проверьте обновленный ответ. – inket