如何在Mail.app和Xcode中获得两行工具栏?

时间:2012-12-04 21:30:53

标签: cocoa nswindow nstoolbar

我正在尝试在我的应用程序中添加NSToolbar之后的“第二行”,它仍然是标题栏的一部分。例如,Mail在NSToolbar下面有一个细的灰色分隔线,下面有一些额外的项目。非常具体地,当窗口进入全屏模式时,当第二个“行”在系统菜单栏下滑下时,该第二个“行”保持附着在标题栏上。 Xcode也有类似的故事。

enter image description here enter image description here enter image description here enter image description here

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

enter image description here enter image description here

3 个答案:

答案 0 :(得分:3)

我需要做的是在工具栏下方的视图上调用[NSToolbar setFullScreenAccessoryView:]。这导致了我的目标。有关此方法,请参阅NSToolbar documentation

答案 1 :(得分:1)

fullScreenAccessoryView在macOS 10.10中已弃用

要在最新版本的macOS中执行此操作,请使用addTitlebarAccessoryViewController上的NSWindow方法并传入NSTitlebarAccessoryViewController的子类。

例如:

NSTitlebarAccessoryViewController *accessoryViewController = [[NSStoryboard storyboardWithName:@"Main" bundle:nil] instantiateControllerWithIdentifier:@"AccessoryViewController"];
[self.mainWindowController.window addTitlebarAccessoryViewController:accessoryViewController];

答案 2 :(得分:0)

第一个是普通工具栏。对于第二个工具栏,您可以创建所需高度的单独视图,并将其添加到主着陆窗口中。