[self.distanceSlider setThumbImage:[UIImage imageNamed:@"handle-slider"] forState:UIControlStateNormal];
我们来看看那段代码。
如果我使用视网膜显示器,那么调用的图像是否为handle-slider @ 2x而不是handle-slider?
请注意,这可能会引发问题。想象一下,如果我加载一个图像只是为了处理它,我真的真的想加载句柄滑块,或处理滑块@ 2x?然后让iOS覆盖我的决定并随意加载@ 2x图像将会有点愚蠢。
另一方面,大多数时候,我使用UIImage imageNamed来填充按钮。在这种情况下,添加@ 2x非常有意义。
在任何情况下,苹果最终会使用哪条路径,如果可能,还有什么参考?
我搜索了stackOverflow。
大多数答案与建议其中一个答案不一致。
答案 0 :(得分:3)
[UIImage imageNamed:]
的{{3}}具有您想要了解的信息。
此方法在系统缓存中查找具有的图像对象 指定名称并返回该对象(如果存在)。如果匹配 图像对象尚未在缓存中,此方法加载图像 来自指定文件的数据,缓存它,然后返回 结果对象。
在运行iOS 4或更高版本的设备上,如果是,则行为相同 设备的屏幕比例为1.0。如果屏幕的比例为2.0, 此方法首先搜索具有相同文件名的图像文件 附加一个@ 2x后缀。例如,如果文件的名称是 按钮,它首先搜索按钮@ 2x。如果找到2x,则加载 该图像并设置返回的UIImage对象的scale属性 到2.0。否则,它会加载未修改的文件名并设置比例 属性为1.0。