问题标签 [nstoolbaritem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
212 浏览

cocoa - NSToolbarItem 宽 32 点

我正在尝试在工具栏中创建一个自定义显示,类似于 Xcode 工具栏中心的信息窗格。

我们如何创建NSToolbarItem比 32 点更宽的点?

框架始终将其限制为 32 点,即使最小和最大尺寸都大于该尺寸。

我已经尝试了很多事情 - 包括通过使用不同的最小和最大宽度设置(无效)将宽度设置为文档所示的灵活,分配更宽 32 点的图像(缩小),实现自NSToolbarItem定义自定义视图设置视图、视图的框架和工具栏项的最大值。代码中的大小(无效)。

关于如何启用大于 32 点限制的工具栏项目的任何提示?

0 投票
1 回答
428 浏览

objective-c - 设置 NSToolbarItem 未选中

我目前正在尝试定义一个NSToolbar可选择的表示绘图 OSX 应用程序中的工具 NSToolbarItems我希望用户能够通过单击来选择和取消选择要使用的工具(NSToolbarItems)

如果你碰巧知道 Sketch,那就是我正在寻找的工具栏行为:

所选工具截图

在上图中,您可以看到选择了“编辑”工具。如果再次单击该项目,它将被取消选择:

未选择的工具截图

我一直在阅读工具栏的 Apple 文档,但没有找到有关如何实现能够选择/取消选择工具栏项的这种效果的信息。在“可选工具栏项目”中它说:

setSelectedItemIdentifier:您的应用程序可以使用传递所需工具栏项的标识符的方法来指定当前选定的工具栏项。当前选择的工具栏项由方法返回selectedItemIdentifier。如果当前没有选择,则返回 nil。

但我还没有找到该setSelectedItemIdentifier:方法的定义位置,或者它是否可以解决我的要求。

我的工具栏项目现在发生的情况是,一旦单击,它们只能通过单击另一个可选项目来取消选择。单击一个项目后,将始终有一个选定的项目。

有什么简单的方法可以解决这个问题吗?我是否遗漏了文档的重要部分,它解释了如何实现这种效果?

非常感谢!

回答: 所以最后它就像将 的 设置为selectedItemIdentifier一样NSToolbar简单nil。这会导致所选元素被取消选择。

0 投票
1 回答
217 浏览

swift - 自定义绘制 NSToolbarItem

我有一个 NSToolbar,我想在项目上画画。如果我使用 NSView 作为项目而不是图像工具栏项目,则此方法有效。问题:如果我将 NSView 连接到 IBAction,则 NSView 没有响应。

如何子类化图像工具栏项,以便我可以完全为自己绘制?(我想自己画图)

0 投票
1 回答
45 浏览

macos - NSToolbar 中渲染错误的控件

我尝试将按钮和分段控件添加到工具栏中,但它们的渲染效果很差(图像以获得更好的想象力) - 太薄了,无论我做什么,我都设置了 NSToolbarItem 的最大和最小尺寸,没有任何效果。知道有什么问题吗?

0 投票
1 回答
416 浏览

swift - NSToolbarFlexibleSpaceItem 在 Swift 中是对 NSSplitViewItem 的约束

在此处输入图像描述

几乎所有 macOS 官方应用程序都有这个工具栏的功能,NSToolbarItem灵活的空间是限制NSSplitViewItem查看的。我首先认为 NSToolbar 上可能有 3 个不同的部分。但它只是一个工具栏。您可以打开 Notes 应用程序并自定义工具栏。

  • 第一个灵活空间被检测到并与第一个拆分视图项目一起移动。
  • 第二灵活空间被检测到并与第二分割项一起移动。
  • 其余的将只是正常的灵活空间。
  • 如果只有两个灵活空间,则第二个将充当正常的灵活空间。同样的事情也适用于一个和/或灵活的空间。

我想这就是 Apple 配置灵活空间项的方式。

我找到了这个JWToolbarAdaptiveSpaceItem,但它是可移动的,并且不能像 Note 应用程序那样用灵活的空间项目替换。

还有另一个 stackoverflow 的问题(我现在找不到)询问这个问题,但答案是添加不是 NSToolbar 的假视图和按钮。

因此,有谁知道如何实现这一目标?

(对不起我的英语)

0 投票
5 回答
1925 浏览

macos - NSToolbarItem:“确保此工具栏项具有有效的帧/最小/最大尺寸”?

自从升级到 Mac OS Sierra 和新的 XCode 版本后,每次我为每个 NSToolbarItems 启动我的应用程序时都会收到以下错误:

我尝试在 StoryBoard 中随意更改大小,但没有运气,当我四处搜索时,我发现有几个人在使用新操作系统时也遇到了这个问题,但没有有用的答案。

有人遇到同样的问题,有什么建议吗?

非常感谢,

马克

0 投票
0 回答
173 浏览

xcode - Xcode 界面生成器自行重置 NSToolbarItem 大小,然后抱怨它

自从更新到 Xcode 8 和 Sierra 后,我在运行应用程序时在控制台中收到以下错误消息:

NSToolbarItem (NSToolbarItem: 0x608000121360) 必须将 NSButton: 0x608000140160 的大小从 {35, 25} 调整为预期的 {37, 27} 大小。确保此工具栏项目视图具有有效的帧/最小/最大尺寸。这是一个应用程序错误,请不要针对 AppKit 或 NSToolbar 提交错误!中断 _NSToolbarAdjustedBorderedControlSizeBreakpoint

我为这个项目所拥有的是一个NSToolbarItem包含一个NSButton. 按钮的宽度设置为 35,高度字段显示为灰色并禁用。封闭的工具栏项目的最小尺寸为 35 x 25,最大尺寸为 39 x 27(我希望它们的最小值和最大值具有相同的值,但请继续阅读)。我尝试将工具栏项的最小值和最大值设置为相同的 35 x 25、37 x 27 和 39 x 27,但在每次保存文件并切换到新文件后,IB 肯定会自行更改这些值稍微不同的东西(我认为将最大宽度和高度增加了 2),并且情节提要文件在侧边栏中显得更暗,表示未保存的更改。只有当我在保存后运行项目时,值才会保持显示状态(并且控制台警告消失)。

我真的很生气,必须在每次构建之前更改这些值。为什么 IB 不保留我的值然后抱怨它?

0 投票
3 回答
1741 浏览

cocoa - NSToolbarItem:大小按钮以适应/设置内容拥抱优先级

我正在尝试制作NSToolbarItem一个NSButton适合按钮宽度的内容。但是,当我将工具栏项的最大宽度设置为较高的值(例如 300)并且工具栏中有足够的空间时,按钮将始终扩展为完整的 300 点。

我怎样才能让按钮增长到例如 300 点,但前提是必须容纳它的内容(即拥抱它的内容)?如果按钮contentHuggingPriority位于NSToolbar.

0 投票
1 回答
278 浏览

swift - NSToolbar - 我们什么时候可以访问 ToolBarItem?

NSToolbaritems属性仍然为空windowDidLoad

我正在寻找一个在加载所有工具栏项时调用的函数。之类的东西ToolbarDidLoad,或ItemsDidLoad

0 投票
2 回答
1728 浏览

cocoa - 将 NSToolbarItems 与 NSSplitView 列对齐

Finder 和 Notes 具有我正在寻求重现的特殊行为。NSToolbar 中的“灵活空间”似乎考虑了拆分视图的尺寸。例如,第一组按钮在侧边栏的左侧与右侧对齐。第二组图标与第一列的右侧对齐。当我加宽侧边栏时,工具栏项目会随之移动。

有可能重现这个吗?

在此处输入图像描述


解决方案

使用@KenThomases 提供的解决方案,我实现了如下: