我喜欢尝试完全接管NSToolbar所在的区域,这样我就可以放置自己的自定义控件,视图和背景。使用该区域的优点是:
- 任何滑动面板出现在工具栏区域下方,而不仅仅是标题栏。
- 在Lion中,当鼠标位于屏幕顶部时,工具栏区域会随着菜单栏一起下降。
我已经尝试过使用无边界窗口,并在其中实现我自己的自定义视图,但不幸的是,我失去了上述优势以及其他一些小问题。
我目前的方法是使用未记录的方法'_toolbarView'与NSToolbar和添加我的自定义视图到它的子视图。这工作得很好,因为我可以关闭工具栏自定义。不幸的是,工具栏的大小是用该工具栏中的项初始化的。有没有人知道如果我可以改变工具栏的大小,而不添加一个假的工具栏项目?
也许还有一种我目前不知道的更好的方法。谢谢您的建议和评论。
无需使用任何未记录的api。只需创建一个带有自定义视图的工具栏项:
- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag {
NSToolbarItem *item = [[[NSToolbarItem alloc] initWithItemIdentifier:itemIdentifier] autorelease];
…
[item setView:myCustomToolbarView];
…
}
你可以控制你的自定义工具栏的大小使用项目的minSize
和maxSize
属性(例如在你的NSWindowDelegate
的-windowDidResize:
)。
还记得更新工具栏的显示模式,使其不显示项目标签:
[toolbar setDisplayMode: NSToolbarDisplayModeIconOnly];