Как вы используете темную вибрацию в NSWindow?
Каков правильный способ использования режимов Vibrant Dark (NSAppearanceNameVibrantDark
) или Vibrant Light (NSAppearanceNameVibrantLight
) с помощью NSWindow
?
Я создаю приложение и предлагаю новый вид Vibrant Dark в качестве опции для основного приложения NSWindow
. Окно представляет собой довольно прямое окно с NSToolbar
сверху и свитком в качестве основной области содержимого.
Там много информации от Apple о том, как использовать новые проявления вибрации в сочетании с NSVisualEffectsView
, но я ищу разъяснения о том, как использовать эти появления на NSWindow
.
В заголовочном файле NSAppearance.h
есть комментарий, в котором говорится, что яркие появления должны быть установлены только на NSVisualEffectsView
. Там нет упоминания об его поддержке NSWindow
.
В видеороликах WWDC говорится о том, что вы используете просмотры с поддержкой слоев и что вы позволяете играть на своих подзонах при использовании новых ярких выступлений, но опять же, не упоминая об использовании их на NSWindow
.
В примере кода VisualEffectsPlayground есть пример приложения, подобного Facetime, которое использует режим темной вибрации, но у него нет панели инструментов, и она использует маску полного содержимого.
Из этой информации, я делаю следующее в моем методе NSWindowController windowDidLoad
:
[self.window.contentView setWantsLayer:YES];
self.window.appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantDark];
И, конечно же, я получаю черный NSToolbar
с черной рамкой заголовка. Таким образом, похоже, что он работает правильно, но когда мой scrollview прокручивает его содержимое (миниатюры изображений), стандартная прозрачность под символом NSToolbar
и панель заголовка окна либо не присутствует, либо случайно присутствует. Кажется, что нет какой-либо картины. Иногда, когда я просматриваю прокрутку, содержимое отображается в "размытом" состоянии под панелью инструментов и в строке заголовка. В других случаях, когда я прокручиваю, панель инструментов и заголовок являются просто непрозрачными черными. (Строка заголовка и панель инструментов по-прежнему рисуют названия и кнопки.)
Когда я не запрашиваю слой для представления содержимого окна, я получаю больше серого заголовка и заголовка окна, а не "чистого" черного. (Мой цвет фона прокрутки может быть белым, темно-серым или черным.)
Любая помощь или пояснение о том, как правильно настроить NSWindow
(содержащую NSToolbar
и NSScollView
) для использования новых проявлений вибрации, будет высоко оценена.
Ответы
Ответ 1
Это сделает окно темного режима. Впоследствии все в окне (включая заголовок, панель инструментов и даже диалоговые листы) станет темным.
let USE_DARK_MODE = true
if USE_DARK_MODE {
window.appearance = NSAppearance(named: NSAppearanceNameVibrantDark)
window.invalidateShadow()
}
invalidateShadow
не требуется, но иногда тень не работает должным образом, если не хватает. (OS X 10.10)
Ответ 2
Я понял, что вы можете подклассом NSWindowController
. Задайте класс для вашего Window Controller в IB своим пользовательским NSWindowController
. После этого в функции windowDidLoad
self.window?.titlebarAppearsTransparent = true
Также установите "Просмотр содержимого полного размера" в инспекторе атрибутов для NSWindow
.
![введите описание изображения здесь]()