全屏隐藏NSToolbar



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

如何使这个工具栏在全屏中也是透明的?

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

额外的好处:我已经启用了isMovableByWindowBackgroundable,但有没有一个选项可以在双击窗口背景的同时切换"最大化"操作,就像它通常用于标题栏一样?

图片如下:

透明工具栏的外观

它在全屏中的外观,工具栏是不透明的

您可以通过设置NSWindow的委托并实现:来实现与Mac App Store相同的效果

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

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

我想您正在寻找的是这样的窗口条件。

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

您可以将此代码添加到NSWindowControllerswindodDidLoad()

在Mac应用商店应用程序中,我看不到任何工具栏。如果不想显示工具栏,则不需要向窗口中添加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)

希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新