如何以编程方式隐藏可可应用程序中的菜单栏?我想充分利用屏幕区域。
答案 0 :(得分:4)
我知道有两种好方法可以做到这一点。
<强> 1 强>
在Cocoa中,您可以调用NSMenu类方法setMenuBarVisible:
来显示或隐藏菜单栏。
在撰写本文时,NSMenu类的文档没有告诉您以下附加信息。
仅对调用此方法的应用程序隐藏菜单栏。 Dock也将同时隐藏。
(至少在10.9中是这样,我没有测试任何其他版本。)
当您想要以全屏方式使用应用程序时,这非常有用,其中您有一个封面窗口,一个与屏幕大小无关的无边框窗口。 这个很好的功能(与使用LSUIElement设置相反)是你的应用程序可以继续在应用程序切换器循环中,以及当其他应用程序处于活动状态时在Dock中可见。 这允许用户仍然通过Dock或应用程序切换器激活全屏应用程序。 这意味着您仍然可以使用应用程序的Dock菜单访问应用程序或其他功能的首选项窗口。 如果您的应用程序确实是一个窗口级别比其他应用程序更高的全屏幕封面窗口,那么这是非常方便的,但您仍然希望制作首选项和退出应用程序的功能,并且您希望应用程序的可视功能可用时其他应用程序处于活动状态。
<强> 2 强>
另一种方法是通过NSApplication
方法setPresentationOptions:
使用NSApplicationPresentationOptions
枚举的参数,例如选项NSApplicationPresentationHideMenuBar
使用这种方法非常谨慎阅读文档,虽然它为您提供了额外的选项,并且仍然只是特定于应用程序,但您需要知道某些选项是互斥的。你必须遵守规则,否则只会向控制台发出例外情况。
3 有一个第三个和糟糕的选项。如果您有一个作为守护程序的帮助应用程序,您可以使用它来更改应用程序的LSUIElement状态,并基本上重新启动您的应用程序。这是愚蠢的,它会让你完全脱离应用程序切换器,如果你真的在写一些不应该存在的东西,这很好,但这种情况很少见。
答案 1 :(得分:2)
还有NSView enterFullScreenMode:withOptions:
方法,尽管在10.7之前适用的大多数应用程序都应该使用10.7及更高版本的现代全屏窗口API。