如何在macOS Catalyst应用程序中禁用“显示选项卡栏”?

3

我有一个支持多窗口的macOS Catalyst应用程序,但它内置了选项卡,这就是为什么我想禁用原生菜单栏的“显示选项卡栏”选项。

如下图所示,它实际上破坏了我的布局,而且由于我的应用程序永远不会使用此功能,我想摆脱它,有没有办法做到这一点?

Unnecessary tab bar

以下是我想完全禁用的选项:

enter image description here

3个回答

4

这是我去年夏天得到的解决方案,由一位苹果开发者提供,调用了一个AppKit方法来禁用选项卡和菜单项:

Class _nswindow = NSClassFromString(@"NSWindow");
[_nswindow setAllowsAutomaticWindowTabbing:NO];

你需要使用丑陋的NSClassFromString,因为Catalyst中没有AppKit,但是可以发布这样的应用程序(我这样做)。
哦,那是Objective-C而不是Swift。从Swift调用“私有”API很棘手;我建议要么桥接使用ObjC,要么像这样使用Dynamic libraryDynamic.NSWindow.setAllowsAutomaticWindowTabbing(false)

1

在Mac OS Monterey中,您可以使用Info.plist中的窗口选项卡退出功能,称为UIApplicationSupportsTabbedSceneCollection

<key>UIApplicationSceneManifest-macos</key>
<dict>
    <key>UIApplicationSupportsMultipleScenes</key>
    <true/>
    <key>UIApplicationSupportsTabbedSceneCollection</key>
    <false/>
</dict>

来源 - WWDC 21演示:Mac Catalyst有什么新功能(@7:45)


我不确定这里的“-macos”是做什么的,但在我的Info.plist文件中,在“UIApplicationSceneManifest”键下添加一个值为falseUIApplicationSupportsTabbedSceneCollection可以实现所需的结果。 - salami

1

我来到这里是为了在一个AppKit应用程序中寻找答案。结果发现你可以通过选择你的NSWindow实例并设置这个值来实现:

Properties for NSWindow showing "Tabbing Mode" set to "Disallowed"

在这里,将“选项卡模式”设置为“不允许”,那些菜单项(以及该功能)就会消失。

当然,您也可以在代码中执行此操作:

window.tabbingMode = .disallowed


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接