不包括iPhone项目中的非视网膜显示图像

时间:2012-01-07 15:59:50

标签: iphone xcode ios-simulator retina-display

我有一个iPhone Xcode项目,目前只包含视网膜显示的图像(正常尺寸的两倍,后缀为@ 2x.png)。当我在iPhone模拟器(非视网膜)上运行应用程序时,图像仍在显示。这是否意味着我不需要担心包括两组图像:视网膜和非视网膜?

这一切似乎有点奇怪。我认为如果没有包含非2x文件,非视网膜设备上不会出现任何图像。

注意:我没有在非视网膜设备上测试我的应用程序。只是模拟器。

3 个答案:

答案 0 :(得分:2)

我很确定如果你没有非视网膜图形,iOS只会使用@ 2x并缩小它。虽然这是次优的,因为你让iOS在运行时进行缩放,这比包含非视网膜图形慢,而且iOS可能不如缩放所选择的图形编辑器那么好。

答案 1 :(得分:1)

即使它有效,但这不是一个好的做法,如果你有一个媒体沉重的应用程序肯定会影响性能和电池寿命和内存占用和....

顺便说一句,只是你没有可用的1x图形,或者你担心你的应用程序(下载大小)或...

答案 2 :(得分:1)

如果您要在Interface Builder中分配图像,并且将图像属性设置为UIImageViewimage@2x.png,则iOS将不会知道它是高分辨率的“2x”图像。实际上,在视网膜显示屏上,iOS会查找名为image@2x@2x.png的图像。由于它找不到它,它会将图像的比例因子设置为1.0。

contentMode属性(在XCode中只是“模式”)将决定是否出现任何图像缩放以适应UIImageView的约束。您可能希望将模式设置为“Aspect Fit”,以便根据视网膜和非视网膜显示器的需要缩放高分辨率图像。通常,图像将显示在Interface Builder中。

如果您使用UIImage的imageNamed或类似功能加载图片,只需指定image(其中“image.png”不存在,但“image@2x.png”确实存在),然后iOS实际上会在非视网膜显示器上找到图像,但比例因子将为1.0。和以前一样,您需要缩放它以适合您的视图。图像将在视网膜设备上正常工作,比例因子将设置为2.0,因为iOS首先查找“2x”图像,如果其他文件存在与否则无关紧要。

这是来自Apple关于imageNamed的文档:

  

在运行iOS 4或更高版本的设备上,如果是,则行为相同   设备的屏幕比例为1.0。如果屏幕的比例为2.0,   此方法首先搜索具有相同文件名的图像文件   附加一个@ 2x后缀。例如,如果文件的名称是   按钮,它首先搜索按钮@ 2x。如果找到2x,则加载   该图像并设置返回的UIImage对象的scale属性   到2.0。否则,它会加载未修改的文件名并设置比例   属性为1.0。有关详细信息,请参阅iOS应用程序编程指南   支持具有不同比例因子的图像。

如果可能的话,你真的应该包括视网膜和非视网膜图像。使用高于必要的高分辨率图像会对内存和性能产生负面影响。