-4
[self.distanceSlider setThumbImage:[UIImage imageNamed:@"handle-slider"] forState:UIControlStateNormal];

让我们看一下这段代码。

如果我使用视网膜显示器,图像是否会被称为 handle-slider@2x 而不是 handle-slider?

请注意,这可能会引发问题。想象一下,如果我加载图像的唯一目的是处理它,我真的很想加载句柄滑块或句柄滑块@2x?然后让 iOS 覆盖我的决定并任意加载 @2x 图像将有点愚蠢。

另一方面,大多数时候,我使用 UIImage imageNamed 来填充按钮。在这种情况下,添加@2x 非常有意义。

无论如何,苹果最终会使用哪条路径,如果可能的话,参考是什么?

我搜索了stackOverflow。

大多数答案与一个建议的答案不一致。

4

1 回答 1

3

文档[UIImage imageNamed:]正是您想知道的信息。

此方法在系统缓存中查找具有指定名称的图像对象,如果存在则返回该对象。如果匹配的图像对象尚未在缓存中,则此方法从指定文件加载图像数据,缓存它,然后返回结果对象。

在运行 iOS 4 或更高版本的设备上,如果设备的屏幕比例为 1.0,则行为相同。如果屏幕的比例为 2.0,则此方法首先搜索具有相同文件名并附加 @2x 后缀的图像文件。例如,如果文件名是 button,它首先搜索 button@2x。如果找到 2x,则加载该图像并将返回的 UIImage 对象的 scale 属性设置为 2.0。否则,它将加载未修改的文件名并将比例属性设置为 1.0。

于 2012-10-12T07:53:25.340 回答