Скрыть NSToolbar в полноэкранном режиме - PullRequest
0 голосов
/ 06 ноября 2018

Я делаю приложение Какао со скрытыми унифицированными NSToolbar и Titlebar. Я сделал это, добавив панель инструментов в контроллер окна и установив все параметры, чтобы сделать это невидимым и оставить 3 цветные кнопки. Он прекрасно работает в обычном окне, но если я перевожу это окно в полноэкранный режим, в верхней части отображается пустая панель инструментов.

Как сделать эту панель инструментов прозрачной в полноэкранном режиме?

Это может быть возможно, так как это работает в новом Mac AppStore в macOS Mojave (есть скрытая панель инструментов, которая все еще скрыта в полноэкранном режиме и появляется только тогда, когда мышь находится в верхней части экрана).

Бонус: я включил isMovableByWindowBackgroundable, но есть ли возможность переключать действие "развернуть" при двойном щелчке на фоне окна, как это обычно работает для заголовка окна?

Вот картинки:

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

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

Ответы [ 2 ]

0 голосов
/ 16 июня 2019

Вы можете добиться того же эффекта, что и в Mac App Store, установив делегат NSWindow и реализовав:

func window(_ window: NSWindow, willUseFullScreenPresentationOptions proposedOptions: NSApplication.PresentationOptions = []) -> NSApplication.PresentationOptions {
    return [.autoHideToolbar, .autoHideMenuBar, .fullScreen]
}

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

0 голосов
/ 06 ноября 2018

Я предполагаю, что вы ищете такую ​​конфигурацию окна.

window!.titleVisibility = .hidden
window!.titlebarAppearsTransparent = true
window!.styleMask = [window!.styleMask,  NSWindow.StyleMask.fullSizeContentView]

Вы бы добавили этот код в свои NSWindowControllers windodDidLoad()

В приложении Mac App Store я не вижу никакой панели инструментов. Если вы не хотите отображать панель инструментов, вам не нужно добавлять NSToolbar в окно.

EDIT:

Чтобы получить вид и изменить цвет, вы можете использовать код ниже в windowDidLoad. Конечно, для того, чтобы он стал на 100% похожим на окно Mac App Store, требуется более тонкая настройка, и не стоит использовать фиксированный цвет.

let button = window?.standardWindowButton(NSWindow.ButtonType.closeButton)
let containerView = button?.superview?.superview // NSTitlebarContainerView
containerView?.layer?.backgroundColor = CGColor.init(gray: 0.9, alpha: 1.0)

Надеюсь, это поможет.

...