cocoa - 全屏隐藏 NSToolbar

标签 cocoa fullscreen nswindow swift4.2 nstoolbar

我正在制作一个 Cocoa 应用程序,带有隐藏的统一 NSToolbar 和 Titlebar。我通过在窗口 Controller 中添加一个工具栏并设置所有选项以使其不可见并保留 3 个彩色按钮来完成此操作。它在普通窗口中工作得很好,但如果我将此窗口置于全屏模式,它会在顶部显示一个空的工具栏。

如何使该工具栏在全屏下也透明?

这是可能的,因为它在 macOS Mojave 中的新 Mac AppStore 中是如何工作的(有一个隐藏的工具栏,在全屏模式下仍然隐藏,只有当鼠标放在屏幕顶部时才会出现)。

奖励:我已经启用了 isMovableByWindowBackgroundable,但是是否有一个选项可以在双击窗口背景时切换“最大化”操作,就像通常适用于标题栏一样?

图片如下:

How it looks with a transparent toolbar

How it looks in fullscreen, the toolbar is opaque

最佳答案

通过设置 NSWindow 的 delegate 并实现,可以达到与 Mac App Store 相同的效果:

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

这将隐藏全屏状态下的工具栏和菜单栏,仅当鼠标位于屏幕顶部时才会出现。可能需要实现 View 更新才能更新内容,但这是可选的。

关于cocoa - 全屏隐藏 NSToolbar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53173964/

相关文章:

objective-c - NSURL 与 http ://works fine but with ftp://not

objective-c - Objective-C 中的 float 问题

ios - 在 UISlider 中选择一个范围

android - 4.4以下沉浸式全屏

c++ - 在 Carbon App 中将焦点设置到 Cocoa 窗口

objective-c - 静音 Cocoa 错误提示音

iOS 7(子层)AVPlayer 全屏动画,需要在上面(覆盖)UINavigationBar

javascript - IE 在全屏模式下无法滚动

objective-c - CALayer setContents 不适用于 10.5

objective-c - 如何打开带有 "popup"动画的NSWindow