在 Cocoa 应用程序中,我有 16x16 和 32x32 @2x
版本的图像: 。当图像在 NSImageView 中显示时,Mac OS X总是选择更高分辨率的版本(即在非视网膜显示器上缩小 @2x
图像,而不是使用 1:1 版本)。
(左侧的 IB = 良好,右侧正在运行的应用程序 = 缩小的困惑)
当然,我已将两个图像添加到项目中(作为 image.png
和 image@2x.png
)。
如果我从应用程序包中删除 @2x
图像,则 OS X 将显示较低分辨率的图像。
无论 Xcode (4.6.2) 是否将它们组合成 .tiff(并且我已经检查组合后的 .tiff 是否包含这两个图像),该错误都会发生。
奇怪的是,这种情况只发生在这个特定的图像上。同一项目中的其他 1x/2x 图像可以正确显示,匹配屏幕 DPI。
这怎么可能?!除了大小和文件名模式之外,图像是否还必须满足一些特殊标准?
最佳答案
谜团已解:OS X 不喜欢混合类型的 PNG。
$ file *.png
image.png: PNG image data, 16 x 16, 8-bit gray+alpha, non-interlaced
image@2x.png: PNG image data, 32 x 32, 8-bit colormap, non-interlaced
如果两个文件都被迫使用相同的颜色模式(即均为灰色或均为调色板),则 OS X 会正确选择图像。
关于macos - 始终在非视网膜显示屏上使用的图像的视网膜版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16660082/