问题标签 [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 投票
2 回答
1297 浏览

macos - 如何将工具栏(或其项目)与拆分视图控制器的子项的前沿对齐?

在 iOS 中,工具栏可以添加到任何视图中。然而,在 macOS 中,似乎只能向窗口添加工具栏。

我正在开发一个带有带有工具栏的拆分视图控制器的应用程序,但工具栏的项目仅对右视图控制器的上下文有意义

例如,假设我有某种文本编辑器,其中左窗格显示所有文档(如在 Notes 应用程序中),右窗格显示可以编辑的实际文本。格式按钮仅影响右窗格中的文本。因此,将工具栏放置在该右侧窗格中而不是将其拉伸到窗口的整个宽度上似乎非常直观。

带有拆分视图控制器的示例窗口

有没有办法做到这一点?
(或者是否有一个很好的用户体验原因说明这将是一个不好的做法?)

我注意到 Apple 如何在他们的 Notes 应用程序中解决这个问题:他们仍然使用全角工具栏,但将仅与右窗格相关的按钮项与该窗格的前沿对齐。

笔记应用截图

因此,如果无法在视图控制器中放置工具栏,如何将工具栏项与右视图控制器的前沿对齐,如上面的屏幕截图所示?


编辑:

根据TimTwoToes 的回答和Willeke在评论中链接的帖子,似乎可以使用自动布局来约束带有拆分视图的子视图的工具栏项。如果有固定的工具栏布局,此解决方案将起作用。但是,Apple 鼓励(有充分的理由)让用户自定义您的应用程序的工具栏。

因此,我无法将约束添加到工具栏中的固定项目。相反,一个可行的解决方案似乎是使用领先的灵活空间并相应地调整其大小。

0 投票
2 回答
187 浏览

objective-c - 将图像或图标集添加到资产目录以与 NSToolbarItem 一起使用

我有一组像素完美的图标,我想在我的应用程序的工具栏(NSToolbar)上使用它们。工具栏是可配置的,因此我需要提供四种尺寸的图标:小、标准、小@2x、标准@2x。我找不到关于这些图标大小的任何官方信息,但非官方信息(通过我的测试确认)如下:小是 24px,正常是 32px。

因此,我需要在我的图像集中添加四个不同的图像:24x24px、32x32px、48x48px、64x64px。

至于现在我找不到正确的方法。我尝试了十几种不同的方法,但找不到一种可以保留所有四张图像的像素完美质量的方法。

我相信,每次必须更改图像时,我都可以手动加载正确大小的图像,但我想知道哪里是正确的方法。

有没有人有一个很好的解决方案?

是的,我在每次测试之前清理构建文件夹。

0 投票
0 回答
106 浏览

swift - 如何在 macOS 中将文本添加到分段控件,以便它以纯文本模式显示在工具栏中?

如何在 macOS 中将文本添加到分段控件,以便它以纯文本模式显示在工具栏中?

目前我创建了像这样的控件

但是如果我只从工具栏中选择文本,分段控件就会消失。是否可以将文本添加到段中,以便它以工具栏的纯文本模式显示?

0 投票
0 回答
50 浏览

cocoa - 如何对带有标签的自定义 NSToolbarItem 执行默认双击操作

我使用情节提要创建了一个自定义工具栏,其中包含带有标签和按钮的工具栏项。除标签区域外,工具栏中默认的用于缩放和缩小(放大和最小化窗口大小)的双击操作正在工作。如何使其也适用于标签区域。

0 投票
1 回答
152 浏览

swift - 为什么我的 NSMenuItem 在有操作时被禁用?

我正在实现一个NSToolbarItem具有按钮和下拉菜单的自定义,例如 Mail。但是,唯一不起作用的NSMenuItem是被禁用。无论我做什么,我都无法启用它。知道我在这里做错了什么吗?

0 投票
1 回答
285 浏览

nstoolbar - 使用 Xcode 12 创建工具栏按钮的正确方法是什么

我正在尝试使用新的 XCode12/macos11 功能重新创建应用程序工具栏,但似乎无法重现 Apple 应用程序获得的相同结果。

您可以在左侧看到我的应用程序,其图标较小,中间是 Xcode 12,右侧是 Safari。我的印象是 macOS11 会自动调整大小,但这似乎并没有发生。

我遵循了 Apple ToolbarSample,无论我是使用自定义 NSView 和 Square 按钮,还是在界面生成器中使用 ToolbarItem,结果都是不同的。在 Interfacebuilder 中使用 ToolbarItem 会再次生成一个更大的图标,并且我创建的所有工具栏项都没有显示任何鼠标悬停阴影。他们使用什么样的按钮,他们是如何创建它们的?

在此处输入图像描述

0 投票
2 回答
346 浏览

swift - NSToolbar 灵活空间在 Swift 5.x 中不起作用

我使用 Xcode 10.1(我相信是 Swift 4.2)开发了这个应用程序,工具栏看起来不错:

在此处输入图像描述

但是我移植到我的 Xcode 11.6(我相信是 Swift 5.2),现在工具栏上最右边的项目不再位于最右边:

在此处输入图像描述

在移植之前,我添加了加号按钮 - 复选框(显示隐藏)是第一个项目之一,此后从未更改过。按钮也按预期工作 - 他们的动作可以触发。注意:这个应用程序不使用故事板或 IB 的东西。

由于我的代码拆分为多个文件(包含许多不相关的代码),因此我将进行概述。

该类定义工具栏、添加项目、实现所有这些工具栏(委托)方法并使其成为委托。然后我的 NSWindowController 将其设置为应用程序工具栏。

任何人都可以看到导致上述问题的我的代码问题吗?否则,这是一个错误吗?

0 投票
1 回答
2595 浏览

macos - 侧边栏中的 Big Sur 工具栏项目

在 Big Sur 中,Xcode 和日历的工具栏项目在打开时停留在侧边栏上方,但在侧边栏折叠时在左侧保持可见。

侧边栏打开: 在此处输入图像描述

侧边栏折叠: 在此处输入图像描述

在13:55的“采用 macOS 的新外观”中,John 说“放置在分隔符 [sidebarTrackingSeparator] 之前的项目将出现在全高侧边栏上”,就像它们在 Xcode 和日历中一样。我无法完成这项工作。

这是一个演示该问题的示例项目。我使用了 IB 定义的“带侧边栏的窗口控制器”,并添加了一个工具栏项来切换侧边栏。在 NSWindowController 的子类中,我在项目.sidebarTrackingSeparator之后插入.toggleSidebar

有时这不起作用(切换按钮保留在侧边栏的右侧)。有时侧边栏切换会放在溢出菜单中:

在此处输入图像描述

我还没有看到任何关于在 WWDC 会议之外实现此工具栏设计的讨论。有没有人能让这个工作?

0 投票
2 回答
411 浏览

macos - 新 NSSearchToolbarItem 的向后兼容性

在 macOS 11 中,Apple 引入了一个新的 NSToolbarItem NSSearchToolbarItem,当焦点切换到工具栏项时,它会自动调整大小以适应打字。

在此处输入图像描述 在此处输入图像描述

Apple 在这里表示这与旧版本的 macOS 向后兼容:https ://developer.apple.com/wwdc20/10104 (11:50 分钟)

但是,NSSearchToolbarItem在 macOS 10.13 (High Sierra) 上使用 from interface builder 启动我的应用程序时,我的应用程序会因以下应用程序特定信息而崩溃:

*** 由于未捕获的异常“NSInvalidUnarchiveOperationException”而终止应用程序,原因:“*** -[NSKeyedUnarchiver decodeObjectForKey:]:无法为键(NS.objects)解码类(NSSearchToolbarItem)的对象;该类可以在源代码或未链接的库中定义,以 NSException 类型的未捕获异常终止

在 10.15 上启动它可以正常工作。我还不能测试 10.14。

Thomas Tempelmann 于 7 月 6 日更新

事实证明,这是旧 Xcode 12 版本的错误,现在已在 Xcode 12.5.1 中修复。

我打开了一个赏金,因为在 High Sierra 上运行时,工具栏内的 NSSegmentedControls 的大小不正确有一个看似相关的问题,但事实证明这是一个单独的问题(可以通过手动重置工具栏minSizemaxSize控制的frame.size)。

因此,解决方案是使用 Xcode 12.5.1 或更高版本。

0 投票
1 回答
30 浏览

swift - NSToolbarItem 图像在运行的应用程序中看起来很糟糕,但在界面生成器中却没有

我有一些 NSToolbarItems,它们是从比它们需要显示的最终尺寸更高分辨率的图像创建的。我将 PDF 用于 GIF 和 PNG 图像,并将 PNG 用于 Xcode 资产目录中的 MacPaint 图标。自动缩小的尺寸在 Interface Builder 中看起来不错,但在实际应用中却很糟糕。我不确定为什么。我能做些什么来缓解这种情况吗?

它在 Interface Builder 中的样子: IB版

它在正在运行的应用程序中的样子: 运行应用

这是 IB 中的全尺寸版本: 在此处输入图像描述

您可以特别看到“导出 MacPaint”图标正在丢失细节。有什么技巧可以改变这些缩小的方式吗?提前致谢!