2013-06-27 40 views
0

我有一个在iPhone和iPad上运行的应用程序,大多数此应用程序的预期设备将是除iPad mini外的视网膜设备。我有很多图像包含在这个应用程序中。 我的问题是,如果我决定只使用@ 2x图像,iOS会将它们降级到非视网膜设备吗?所以我只运送视网膜图像?如果这是正确的,那么实施它是一个坏主意?视网膜图像,非视网膜设备

+1

我从一个叫做“rescale @ 2x”的地方获得了一个小小的Mac工具。它需要您的@ 2x图像并为它们创建“正常”副本,因此您可以同时拥有这两个副本。 –

回答

0

iOS不会降级这些图像。但是,如果您仔细设置图像浏览的框架,它不会产生任何问题。

+0

真的吗?它不会降级?它通常会从非视网膜升级到视网膜图像?我可以强制降级吗? –

+0

不,它不会降级或升级。但是如果你的画面很小而且图像很大,那么它可以容纳较小画面中的较大图像,反之亦然。 – Apurv

0

如果你的图像视图有contentMode =扩展您的图像将被调整到非视网膜

正常显示,但有一些问题:

1)对非Retina如果显示缩放视网膜图像设备您将有图像边缘模糊。所以如果你想使用这个图像的UI - 这将是一个坏主意。

2)有时Xcode的故事板不一样,如果你只有@ 2倍的图像(例如,在uibuttons)规模的正确图像

0

如果您在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应用程序编程指南。

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

相关问题