带分段控件的 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)上正确显示。
但是,当我 运行 应用程序时,我无法让图标图像正确显示。
- 如果我在 Retina 显示器上启动我的应用程序,任何一个部分都不会显示任何图标。
- 如果我将 window 移动到外接非视网膜显示器,两个图标都会显示。
- 如果我从目录和 运行 应用程序中删除两个图像集中的一个,另一个图标会正确显示!(在任一显示器上)
- 如果我进一步为两个片段设置相同的剩余图像,它们将正确显示!
- 如果我将两个图像集都留在项目中,但将其中一个片段中的 Image 字段重置为空,则另一个图标也不会显示!
这到底是怎么回事??
我已经放了一个 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) 图标,因为它们只是按预期工作。
我正在尝试将 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)上正确显示。
但是,当我 运行 应用程序时,我无法让图标图像正确显示。
- 如果我在 Retina 显示器上启动我的应用程序,任何一个部分都不会显示任何图标。
- 如果我将 window 移动到外接非视网膜显示器,两个图标都会显示。
- 如果我从目录和 运行 应用程序中删除两个图像集中的一个,另一个图标会正确显示!(在任一显示器上)
- 如果我进一步为两个片段设置相同的剩余图像,它们将正确显示!
- 如果我将两个图像集都留在项目中,但将其中一个片段中的 Image 字段重置为空,则另一个图标也不会显示!
这到底是怎么回事??
我已经放了一个 sample project on GitHub 来重现这个问题。
编辑:为了确保,我使用 cartool 命令行实用程序(如 this answer 中所述)从已编译的应用程序二进制文件中提取资源,并且所有 4 个图像的大小都正确.. .
解决方案: 按照下面
为了避免在 运行 时@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) 图标,因为它们只是按预期工作。