如何在通用应用程序中同时支持iPad和iPhone视网膜图形


71

苹果推出了支持视网膜图形的新iPad。

在苹果应用程序中看到了此链接视网膜图形。如您所见,苹果在iPad显示屏上使用后缀“ @ 2x”。

我有一个通用应用程序。那么如何在新的iPadiPhone中支持视网膜呢?iPad视网膜会使用类似于iPad的后缀“ @ 2x”吗?


@ 2x是后缀,而不是前缀,并且视网膜iPad当然使用它,因为它的显示尺寸正好翻了一番
Felix

但是如果我同时拥有iPhone和iPad,该怎么办。检查此iPhone是否然后使用例如image-iphone或image-ipad?
rowwingman 2012年

看到这个答案stackoverflow.com/a/3184200/550177您必须使用UIInterfaceIdiom()
Felix

3
嗯,这是非常心烦检查每次UIInterfaceIdiom()(((
rowwingman

1
您可以编写UIImage类别,添加名为+(UIImage*) deviceIndependentImageNamed:(NSString*)file;或类似方法的方法,也可以在代码中缩放图像而不是使用多个文件
Felix 2012年

Answers:


138

我刚刚创建了一个测试应用程序并进行了测试。

因此,对于没有视网膜的设备:
ImageName.png -对于iPhone / iPod-
ImageName~ipad.png对于iPad

对于配备视网膜显示屏的设备:
ImageName@2x.png -对于iPhone / iPod-
ImageName@2x~ipad.png对于iPad

如果您的iPhone高分辨率图像和iPad高分辨率图像具有相同的大小,则仍然可以使用@ 2x。
要加载图像,只需使用[UIImage imageNamed:@"ImageName.png"];
我刚刚在iOS 5.1、5.0和4.3的iOS模拟器上对其进行了测试。
顺便说一句,为什么你应该使用@ 2x而已。

主要是因为您不应该在iPhone和iPad上使用相同的图形,因为iPhone和iPad的尺寸不同。如果使用相同的尺寸,则iPad视网膜显示屏(如果以前使用过iPhone视网膜显示屏)将已经完成图形处理。如果您要使用不同大小的图像,那么您将为iPhone和iPad使用不同的图像名称。因此,在这一方面,您只需要添加@ 2x后缀即可。这就是为什么您应该仅使用@ 2x后缀的原因。-这些是我的想法。


25
请注意字母P的大小写,因为写〜iPad或〜iPhone时出现问题,奇怪的是它与模拟器兼容,但不适用于真实设备。此外,我发现如果您没有@ 2x〜ipad版本,则新iPad将使用@ 2x版本,在这种情况下,该版本为iPhone视网膜文件。还要考虑到这一点……
LightMan

5
模拟器不区分大小写(首次分发给设备时会引起问题的常见原因),这就是为什么不管外壳如何它都可以在模拟器上工作的原因
马特(Matt



1
后缀-568h仅适用于启动图像,不适用于其他图像。您需要检查设备尺寸。
rowwingman

7

我发现iPad mini /非视网膜iPad硬件,而不是模拟器,会像Rowwingman的回答那样落在ImageName.png而不是ImageName〜ipad.png上。

综观文档,在另一个引用的StackOverflow问题内特,却仿佛设备附加到iphone的图像是做了正确的道路。

MyImage.png-图像资源的默认版本。

MyImage@2x.png-具有Retina显示器的设备的图像资源的高分辨率版本。

MyImage〜iphone.png -iPhone和iPod touch的图像版本。

MyImage@2x~iphone.png-具有Retina显示屏的iPhone和iPod touch设备的图像的高分辨率版本。

图像,声音和视频资源

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.