如何获得像Mail.app和Xcode这样的两行工具栏?

Jak*_*les 5 cocoa nswindow nstoolbar

我试图在我的应用程序的NSToolbar之后添加“第二行”,该行仍然是标题栏的一部分。例如,Mail在NSToolbar下方有一条细的灰色分隔线,并在其下方有一些其他项目。具体地说,当窗口进入全屏模式时,第二个“行”将在系统菜单栏下方向下滑动时保持与标题栏的连接。Xcode也有类似的故事。

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

我尝试将NSWindow设置为纹理并将第二行控件直接放置在窗口的内容视图中。尽管这在窗口模式下看起来大部分是正确的,但是当工具栏在全屏模式下向下滑动时,这些控件当然不会显示在工具栏上。那么如何实现与Mail和Xcode相同的行为?我看了很多工具栏自定义代码,但是没有一个能真正涵盖这种特定情况。

在此处输入图片说明 在此处输入图片说明

Jos*_*osh 5

fullScreenAccessoryView 在 macOS 10.10 中已弃用

为了在最新版本的 macOS 中执行此操作,请使用addTitlebarAccessoryViewController您的方法NSWindow并传入NSTitlebarAccessoryViewController.

例如:

NSTitlebarAccessoryViewController *accessoryViewController = [[NSStoryboard storyboardWithName:@"Main" bundle:nil] instantiateControllerWithIdentifier:@"AccessoryViewController"];
[self.mainWindowController.window addTitlebarAccessoryViewController:accessoryViewController];
Run Code Online (Sandbox Code Playgroud)


Jak*_*les 3

我需要做的是调用[NSToolbar setFullScreenAccessoryView:]工具栏下方的视图。这导致了我想要的行为。有关此方法,请参阅NSToolbar 文档。