首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全屏隐藏NSToolbar

全屏隐藏NSToolbar
EN

Stack Overflow用户
提问于 2018-11-06 14:29:57
回答 2查看 1.5K关注 0票数 7

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

如何使这个工具栏在全屏上也透明?

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

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

以下是图片:

使用透明工具栏时的外观

在全屏上,工具栏是不透明的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-16 16:59:56

通过设置NSWindow的委托和实现,您可以实现与Mac相同的效果:

代码语言:javascript
复制
func window(_ window: NSWindow, willUseFullScreenPresentationOptions proposedOptions: NSApplication.PresentationOptions = []) -> NSApplication.PresentationOptions {
    return [.autoHideToolbar, .autoHideMenuBar, .fullScreen]
}

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

票数 12
EN

Stack Overflow用户

发布于 2018-11-06 17:57:03

我想你要找的是这样的窗户条件。

代码语言:javascript
复制
window!.titleVisibility = .hidden
window!.titlebarAppearsTransparent = true
window!.styleMask = [window!.styleMask,  NSWindow.StyleMask.fullSizeContentView]

您可以将此代码添加到NSWindowControllers windodDidLoad()中。

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

编辑:

要获得视图和更改颜色,可以在windowDidLoad中使用下面的代码。当然,要使其100%像more窗口一样,还需要进行更多的微调,使用固定颜色并不是一个好主意。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53173964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档