NSScrollView во всплывающем окне стал прозрачным под MacOS Mojave - PullRequest
0 голосов
/ 15 октября 2018

В представлении, отображаемом как Popover, я реализую подпредставление справки (NSView с NSScrollView в качестве подпредставления), которое появляется, когда пользователь нажимает кнопку.С Sierra & High Sierra все было в порядке, но с тех пор, как я обновил dev MacPro до Mojave, всплывающая подсказка стала слегка прозрачной.Элементы (NSTextField или NSButton), являющиеся видом справки, по-прежнему видны как белая полоса в темном режиме (или как серая полоса в светлом режиме)

capture of the non-transparent view

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

[help setWantsLayer:YES];
help.layer.opaque = TRUE;
help.backgroundColor = [NSColor colorWithRed:1. green:1. blue:140./255. alpha:1.];
[help.scrollView setWantsLayer:YES];
help.scrollView.layer.opaque = TRUE;
[help.scrollView setBackgroundColor:[NSColor colorWithRed:1. green:1. blue:140./255. alpha:1.]];

Все цвета фона настроены на этот желтый тон.Эта проблема возникает, только если представление, отображающее представление справки, было представлено как NSPopover, а не как NSView из обычного окна.Есть идеи?

1 Ответ

0 голосов
/ 16 октября 2018

добавьте NSRequiresAquaSystemAppearance = YES в ваш info.plist

Чтобы запустить любое приложение в Dark Mode, вы должны использовать MacOS Mojave 10.14 или выше.По умолчанию все существующие приложения будут работать в светлом режиме, даже если система настроена для работы в темном режиме.Приложение, которое запускается на MacOS Mojave, будет работать в Dark Mode при соблюдении двух критериев:

Система считает приложение совместимым с Dark Mode. Внешний вид запущенного приложения установлен на Dark Aqua. Совместимость приложения с DarkРежим определяется комбинацией SDK, против которого он был создан, и значением ключа “NSRequiresAquaSystemAppearance” Info.plist.Если ваше приложение разработано с использованием SDK 10.14 или более поздней версии, оно будет считаться совместимым, если ключ не установлен на YES.Если ваше приложение построено на основе 10.13 SDK или более ранней версии, оно считается несовместимым, если ключ Info.plist не установлен на NO.

...