隐藏 window 标题与附件视图
Hidden window title with accessory view
我想要一个带有隐藏标题的 window,就像在 Safari 或 Xcode 中看到的那样,但使用标题栏附件视图而不是工具栏(我希望更好地控制排列和内容比工具栏提供的)。这可行吗?
我还不太能让它发挥作用。如果我将我的 window 的 titleVisibility
设置为 hidden
,而我的辅助视图的 layoutAttribute
是 bottom
,那么除了标准 close/minimize/zoom 按钮,我的附件视图出现在按钮下方。
如果我将 layoutAttribute
更改为 right
,那么我的附件视图将出现在我想要的标准按钮的右侧,但底部被截断了,因为标题栏不是不够高,并且视图也不会随着 window.
水平调整大小
有没有办法让它工作?还是我必须使用工具栏?
更新: 我用Xcode的可视化调试器检查了Xcode自己的标题栏,发现它使用的是工具栏。调试器拒绝附加到 Safari,所以我想知道它是如何处理新选项卡按钮的。我想那个按钮是一个 right-pinned 附件视图,其余的是一个普通的工具栏。 Safari 的工具栏仍然是可定制的,所以这似乎很有可能。
我决定继续使用工具栏,它工作得很好。
- 我把我的
NSTitleBarAccessoryController
子类继承自 NSViewController
。
- 我为我的 window 创建了一个 non-customizable 工具栏,在允许和默认设置中都有一个 "Image Toolbar Item"。
- 工具栏项的高度为 32,最大宽度为 10000,因此它可以拉伸以填充标题栏。
- 在我的工具栏委托中,在
toolbarWillAddItem:
中,我从笔尖实例化视图控制器并将其视图放入项目中。
- 实际上是新 window 标题的文本标签将其
value
绑定到 window 的 title
。
- 为了匹配 Xcode 标题栏中的间距,使用 1 像素的左右边距(零将切断边缘)和 5 的上边距。
window.titleVisibility = .hidden
将工具栏移动到标题区域。
我想要一个带有隐藏标题的 window,就像在 Safari 或 Xcode 中看到的那样,但使用标题栏附件视图而不是工具栏(我希望更好地控制排列和内容比工具栏提供的)。这可行吗?
我还不太能让它发挥作用。如果我将我的 window 的 titleVisibility
设置为 hidden
,而我的辅助视图的 layoutAttribute
是 bottom
,那么除了标准 close/minimize/zoom 按钮,我的附件视图出现在按钮下方。
如果我将 layoutAttribute
更改为 right
,那么我的附件视图将出现在我想要的标准按钮的右侧,但底部被截断了,因为标题栏不是不够高,并且视图也不会随着 window.
有没有办法让它工作?还是我必须使用工具栏?
更新: 我用Xcode的可视化调试器检查了Xcode自己的标题栏,发现它使用的是工具栏。调试器拒绝附加到 Safari,所以我想知道它是如何处理新选项卡按钮的。我想那个按钮是一个 right-pinned 附件视图,其余的是一个普通的工具栏。 Safari 的工具栏仍然是可定制的,所以这似乎很有可能。
我决定继续使用工具栏,它工作得很好。
- 我把我的
NSTitleBarAccessoryController
子类继承自NSViewController
。 - 我为我的 window 创建了一个 non-customizable 工具栏,在允许和默认设置中都有一个 "Image Toolbar Item"。
- 工具栏项的高度为 32,最大宽度为 10000,因此它可以拉伸以填充标题栏。
- 在我的工具栏委托中,在
toolbarWillAddItem:
中,我从笔尖实例化视图控制器并将其视图放入项目中。 - 实际上是新 window 标题的文本标签将其
value
绑定到 window 的title
。 - 为了匹配 Xcode 标题栏中的间距,使用 1 像素的左右边距(零将切断边缘)和 5 的上边距。
window.titleVisibility = .hidden
将工具栏移动到标题区域。