NSToolbar特殊区域

发布于 2024-11-29 15:40:44 字数 419 浏览 1 评论 0原文

我喜欢尝试完全接管 NSToolbar 所在的区域,这样我就可以放置我自己的自定义控件、视图和背景。使用此区域的优点是:

  • 任何滑动面板都出现在工具栏区域下方,而不仅仅是标题栏。
  • 在 Lion 中,当鼠标位于屏幕顶部时,工具栏区域会与菜单栏一起下降。

我尝试过使用无边框窗口,并在其中实现我自己的自定义视图,但不幸的是我失去了上述优点以及其他一些小问题。

我当前的方法是将未记录的方法“_toolbarView”与 NSToolbar 一起使用,并将我的自定义视图添加到其子视图中。这很好用,因为我可以关闭工具栏自定义。不幸的是,工具栏的大小是用该工具栏中的项目初始化的。有谁知道我是否可以在不添加假 ToolbarItem 的情况下更改工具栏的大小?

也许还有一种我目前不知道的更好的方法。 感谢您的任何建议和意见。

I like to try to completely take over the area where the NSToolbar resides so I can put my own custom controls, views and background. The advantages of using this area are:

  • Any sliding panels appear below the toolbar area instead of just the title bar.
  • In Lion, the toolbar area comes down along with the menu bar when the mouse is at the top of the screen.

I have tried using a borderless window, and implementing my own custom views within it but unfortunately I lose the above advantages as well as having a few other minor problems.

My current method is to use the undocumented method '_toolbarView' with the NSToolbar and add my custom view into its subviews. This works fine as I can turn off toolbar customisation. Unfortunately, the size of the toolbar is initialised with the items within that toolbar. Does anyone know if I can change the size of toolbar without adding a fake ToolbarItem?

Maybe there's also a better way of doing this that I am currently unaware of.
Thanks for any suggestions and comments.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

还在原地等你 2024-12-06 15:40:44

无需使用任何未记录的 API。只需创建一个具有自定义视图的工具栏项:

- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag {
    NSToolbarItem *item = [[[NSToolbarItem alloc] initWithItemIdentifier:itemIdentifier] autorelease];
    …
    [item setView:myCustomToolbarView];
    …
}

您可以使用该项目的 minSizemaxSize 属性(例如在您的 NSWindowDelegate 中)控制自定义工具栏的大小的-windowDidResize:)。

请记住还要更新工具栏显示模式,使其不显示项目标签:

[toolbar setDisplayMode: NSToolbarDisplayModeIconOnly];

No need to use any undocumented APIs. Just create a toolbar item with a custom view:

- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag {
    NSToolbarItem *item = [[[NSToolbarItem alloc] initWithItemIdentifier:itemIdentifier] autorelease];
    …
    [item setView:myCustomToolbarView];
    …
}

You can control your custom toolbar’s size using the item’s minSize and maxSize properties (e. g. in your NSWindowDelegate’s -windowDidResize:).

Remember to also update the toolbar display mode so it doesn't show item labels:

[toolbar setDisplayMode: NSToolbarDisplayModeIconOnly];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文