全屏隐藏NSToolbar

时间:2018-11-06 14:29:58

标签: cocoa fullscreen nswindow swift4.2 nstoolbar

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

如何使该工具栏在全屏模式下也是透明的?

这可能是可行的,因为它可以在macOS Mojave中的新Mac AppStore中工作(有一个隐藏的工具栏,该工具栏仍处于全屏状态,仅在将鼠标放在屏幕顶部时才会显示)。

奖金:我已经启用了isMovableByWindowBackgroundable,但是是否有一个选项可以像双击标题栏一样正常地在双击窗口背景的同时切换“最大化”动作?

这里的图片:

How it looks with a transparent toolbar

How it looks in fullscreen, the toolbar is opaque

2 个答案:

答案 0 :(得分:0)

我假设您正在寻找的是这样的窗户变形物。

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

您应将此代码添加到NSWindowControllers windodDidLoad()

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

编辑:

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

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

希望这会有所帮助。

答案 1 :(得分:0)

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

{
   xtype: 'textfield',
   fieldLabel: 'label text',
   bind: '{data.customerId}', //I checked this and it contains the field data.
}

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