@ 2x是否适用于UIImage imageWithNamed?

时间:2012-10-12 07:49:32

标签: objective-c xcode uiimage retina-display

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

我们来看看那段代码。

如果我使用视网膜显示器,那么调用的图像是否为handle-slider @ 2x而不是handle-slider?

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

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

在任何情况下,苹果最终会使用哪条路径,如果可能,还有什么参考?

我搜索了stackOverflow。

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

1 个答案:

答案 0 :(得分:3)

[UIImage imageNamed:]的{​​{3}}具有您想要了解的信息。

  

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

     

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