2012-01-07 95 views
4

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

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

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

回答

1

即使它的工作原理,它不是好的做法,如果你有一个媒体重应用肯定会影响性能和电池寿命和内存占用和....

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

2

我敢肯定,如果您没有非视网膜图片,iOS会使用@ 2x并将其缩小。虽然这是次优的,因为你让iOS在运行时进行缩放比包含非视网膜图形要慢,而且iOS可能不会像你选择的图形编辑器那样做得好。

1

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

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

如果您正在使用的UIImage的imageNamed或类似功能的加载图像,并且只指定image(其中“image.png”不存在,但“[email protected]”一样),那么,iOS将真正找到在非视网膜显示器上的图像,尽管比例因子将为1.0。如前所述,您需要将其缩放以适合您的视图。该图像将在视网膜设备上正常工作,并且比例因子将被设置为2.0,因为iOS首先查找“2x”图像,而其他文件是否存在则无关紧要。

这是来自Apple的文档上imageNamed

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

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