我正在制作一个可可应用程序,有一个隐藏的统一NSToolbar和标题栏。为此,我在Window Controller中添加了一个工具栏,并设置了所有选项,使其不可见,并保留了3个彩色按钮。它在普通窗口中工作得很好,但是如果我把这个窗口放在全屏上,它会在顶部显示一个空工具栏。
如何使这个工具栏在全屏上也透明?
这是可能的,因为它是如何在新的Mac AppStore在macOS Mojave (有一个隐藏的工具栏仍然隐藏在全屏,只有当鼠标放在屏幕顶部时才会出现)。
奖励:我启用了isMovableByWindowBackgroundable,但是有一个选项可以切换“最大化”操作,同时双击窗口背景,就像它通常对标题栏一样有效吗?
以下是图片:
发布于 2019-06-16 16:59:56
通过设置NSWindow的委托和实现,您可以实现与Mac相同的效果:
func window(_ window: NSWindow, willUseFullScreenPresentationOptions proposedOptions: NSApplication.PresentationOptions = []) -> NSApplication.PresentationOptions {
return [.autoHideToolbar, .autoHideMenuBar, .fullScreen]
}这将隐藏工具栏和菜单,而在全屏时,只有当鼠标在屏幕顶部时才出现。可能需要实现对视图的更新以更新内容,但这是可选的。
发布于 2018-11-06 17:57:03
我想你要找的是这样的窗户条件。
window!.titleVisibility = .hidden
window!.titlebarAppearsTransparent = true
window!.styleMask = [window!.styleMask, NSWindow.StyleMask.fullSizeContentView]您可以将此代码添加到NSWindowControllers windodDidLoad()中。
在应用程序中,我没有看到任何工具栏。如果不想显示工具栏,则不需要向窗口添加NSToolbar。
编辑:
要获得视图和更改颜色,可以在windowDidLoad中使用下面的代码。当然,要使其100%像more窗口一样,还需要进行更多的微调,使用固定颜色并不是一个好主意。
let button = window?.standardWindowButton(NSWindow.ButtonType.closeButton)
let containerView = button?.superview?.superview // NSTitlebarContainerView
containerView?.layer?.backgroundColor = CGColor.init(gray: 0.9, alpha: 1.0)希望这能有所帮助。
https://stackoverflow.com/questions/53173964
复制相似问题