隐藏的窗口标题与配件视图

时间:2016-09-20 16:48:47

标签: macos cocoa osx-yosemite

我希望有一个隐藏标题的窗口,如Safari或Xcode中所示,但是使用标题栏附件视图而不是工具栏(我希望更多地控制排列和内容,而不是工具栏提供)。这可行吗?

我还没有能够让它发挥作用。如果我将我的窗口titleVisibility设置为hidden,而我的附件视图layoutAttributebottom,那么标题区域为空,除了标准关闭/最小化/缩放按钮,我的附件视图显示在该按钮下方。

如果我将layoutAttribute更改为right,那么我的附件视图会显示在我想要的标准按钮的右侧,但是底部被切断,因为标题栏不是'足够高,视图也不会随窗口水平调整大小。

有没有办法让这项工作?或者我必须使用工具栏吗?

更新:我使用Xcode的可视化调试器来检查Xcode自己的标题栏,发现它正在使用工具栏。调试器拒绝附加到Safari,所以我不知道它是如何处理新的选项卡按钮的。我想这个按钮是一个右侧固定的附件视图,其余的是一个普通的工具栏。 Safari的工具栏仍然是可自定义的,所以看起来很可能。

1 个答案:

答案 0 :(得分:0)

我决定继续使用工具栏,它工作得很好。

  • 我接受了NSTitleBarAccessoryController子类,并将其从NSViewController继承而来。
  • 我为我的窗口创建了一个不可自定义的工具栏,在允许和默认设置中都有一个“图像工具栏项”。
  • 工具栏项目的高度为32,最大宽度为10000,因此可以拉伸以填充标题栏。
  • 在我的工具栏委托中,在toolbarWillAddItem:中,我从笔尖实例化视图控制器并将其视图放入项目中。
  • 实际上是新窗口标题的文本标签将value绑定到窗口的title
  • 要匹配Xcode标题栏中的间距,请使用1像素的左右边距(零将切除边缘)和上边距为5。
  • window.titleVisibility = .hidden将工具栏移动到标题区域。