是否可以在不全屏的情况下使窗口覆盖菜单栏?
提前致谢!
可以,非常简单:
window.level = NSMainMenuWindowLevel + 1;
(参考文献:全屏绘制,Mac OS X OpenGL编程指南)
sebastianmarkow正确指出这对于普通文档窗口来说是可怕的行为,但有几种窗口类型是正常的:光标、工具提示和类似Xscope的特殊实用程序。
我喜欢Jens Ayton的回答,但我认为使用已定义的常量比选择任意数字更好。
个人而言,我使用了NSPopUpMenuWindowLevel
,如下:
self.window.level = NSPopUpMenuWindowLevel;
以下是我发布此答案时您可能更喜欢的其他常量:
NSNormalWindowLevel
普通窗口级别NSFloatingWindowLevel
浮动窗口级别NSSubmenuWindowLevel
子菜单窗口级别NSMainMenuWindowLevel
主菜单窗口级别NSStatusWindowLevel
状态窗口级别NSModalPaneWindowLevel
模态窗口级别NSPopUpMenuWindowLevel
弹出式菜单窗口级别NSScreenSaverWindowLevel
屏幕保护窗口级别这里是参考链接(苹果公司有改变文档组织方式以及在多年内破坏这些链接的倾向,但API并不会经常改变,这就是我为什么包含了上面那个列表的原因。我怀疑这个链接在3年左右就不会再工作了,但这些常量在未来20年中可能不会经常发生变化。)
我不认为你可以放置在菜单栏的顶部,但是你可以通过调用以下方法将菜单栏设置为在你的应用程序成为最前面的应用程序时自动隐藏:
[[NSApplication sharedApplication] setPresentationOptions: NSApplicationPresentationAutoHideMenuBar];
这将使您可以在应用程序中正常使用通常用于菜单栏的空间。
NSApplicationPresentationAutoHideMenuBar
,则必须同时使用 NSApplicationPresentationHideDock
或者 NSApplicationPresentationAutoHideDock
。"否则将引发异常。 - JWWalker