带分段控件的 NSToolbarItem - 图像未正确呈现

NSToolbarItem with Segmented Control - Images Not Rendering Correctly

我正在尝试将 Xcode 的工具栏控件模拟到 show/hide 导航器和检查器:

...但没有底部窗格(只有左和右:两段)

我截屏了 Xcode 的 UI 中的图标,并在图像编辑应用程序中对其进行了描摹。左窗格的资源是:


@1x:

(20x20 @72 dpi)


@2x:

(40x40 @72 dpi,虽然使用20x20 @144 dpi似乎没什么区别)


右窗格中的对应项是相同的,但水平翻转了。

所有资源都存放在资产目录中,如下:

我在工具栏上放置了一个分段控件,以创建一个工具栏项,其中包含一个分段控件,并为每个分段(0 和 1)设置图像属性。

两个片段的图像缩放都设置为"Proportionally Down"。段控件已选中段宽度 "Fixed",两个段的宽度均为 48。工具栏项的最小尺寸为 (83 x 25),最大尺寸为 (100 x 28)。

图标在 Storyboard(Interface Builder)上正确显示。

但是,当我 运行 应用程序时,我无法让图标图像正确显示。

这到底是怎么回事??

我已经放了一个 sample project on GitHub 来重现这个问题。


编辑:为了确保,我使用 cartool 命令行实用程序(如 this answer 中所述)从已编译的应用程序二进制文件中提取资源,并且所有 4 个图像的大小都正确.. .


解决方案: 按照下面 的建议,我改用矢量图形 (PDF) 作为图标。我下载了 Acorn 的试用版并以 1 倍大小重新创建了我的图标,然后导出为 PDF。

为了避免在 运行 时@2x 的放大尺寸模糊,我必须确保编辑器中的所有坐标都是整数,并且还要选中 "Snap to pixels" 框每个形状层的矢量形状检查器:

(大团圆结局)

$ git commit -m "Fix toolbar icons for good (PDF)"

根据我的经验,在工具栏中使用位图比较麻烦。您可以尝试以完全推荐的分辨率为目标,以避免出现一些问题:https://developer.apple.com/macos/human-interface-guidelines/icons-and-images/custom-icons/

但是,最简洁的方法是使用矢量 (pdf) 图标,因为它们只是按预期工作。