Cocoa 全屏隐藏NSToolbar

Cocoa 全屏隐藏NSToolbar,cocoa,fullscreen,nswindow,swift4.2,nstoolbar,Cocoa,Fullscreen,Nswindow,Swift4.2,Nstoolbar,我正在制作一个Cocoa应用程序,带有隐藏的统一NSToolbar和标题栏。我在窗口控制器中添加了一个工具栏,并设置了所有选项使其不可见,并保留了3个彩色按钮。它在普通窗口中工作得很好,但如果我将此窗口设置为全屏,它会在顶部显示一个空工具栏 如何使此工具栏在全屏显示时也是透明的 这是可能的,因为它在macOS Mojave的新Mac AppStore中是如何工作的(有一个隐藏的工具栏,它仍然隐藏在全屏中,只有当鼠标放在屏幕顶部时才会出现) 奖励:我已经启用了isMovableByWindowBa

我正在制作一个Cocoa应用程序,带有隐藏的统一NSToolbar和标题栏。我在窗口控制器中添加了一个工具栏,并设置了所有选项使其不可见,并保留了3个彩色按钮。它在普通窗口中工作得很好,但如果我将此窗口设置为全屏,它会在顶部显示一个空工具栏

如何使此工具栏在全屏显示时也是透明的

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

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

以下是图片:


我想您要找的是这样的窗口配置

window!.titleVisibility = .hidden
window!.titlebarAppearsTransparent = true
window!.styleMask = [window!.styleMask,  NSWindow.StyleMask.fullSizeContentView]
您可以在NSWindowController中添加此代码
windoddiload()

在Mac App Store应用程序中,我看不到任何工具栏。如果不想显示工具栏,则无需向窗口中添加NSToolbar

编辑:

要获取视图并更改颜色,您可以使用
windowDidLoad
中的以下代码。当然,要让它100%像Mac应用商店窗口一样,还需要进行一些微调,使用固定颜色不是一个好主意

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

希望这有帮助。

通过设置NSWindow的委托并实施以下操作,您可以实现与Mac App Store相同的效果:

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

这将在全屏显示时隐藏工具栏和菜单栏,仅当鼠标位于屏幕顶部时才显示。可能需要实现视图更新以更新内容,但这是可选的。

您的代码确实可以隐藏标题栏,但关闭/最小化/最大化按钮位于左上角。我希望它们就像有统一工具栏时一样。我可以通过添加一个空工具栏来实现这一点,使用您提供的相同代码,它就像我想要的一样不可见,但如果我全屏显示,工具栏会重新出现,而没有工具栏,标题栏会消失,但3个按钮不是我想要的位置。对于Mac App Store,如果有一个工具栏,按钮就在应该有的地方,如果你全屏显示,把鼠标放在顶部,向下滑动显示关闭/最小化/最大化按钮的面板是一个统一工具栏的大小(半透明)。这让我觉得他们使用的是一个透明的工具栏。你是对的,它看起来有些不同。我扩展了我的答案,以展示如何访问和修改视图的颜色。我找到了一种获得正确视图的方法。有了它,我可以改变条的颜色,但在全屏上没有效果。我想要的是使工具栏全屏消失。我不确定是否可以通过改变颜色来实现它:/What's your initial question->如何使这个工具栏在全屏上也是透明的(不可见的)?如果你按照我向你提出的建议去做,你会得到这个和AppStore应用程序一样的外观和感觉。但是,如果你想在没有工具栏的情况下创建一个有工具栏的窗口,我只能祝你好运。效果很好。这里同样在ObjC:-(NSApplicationPresentationOptions)窗口:(NSWindow*)窗口将使用全屏显示选项:(NSApplicationPresentationOptions)建议选项{返回NSApplicationPresentationAutoHideToolbar | NSApplicationPresentationAutoHideMonubar | NSApplicationPresentationFullScreen;}干杯,伙计!让我过了一周!