通用应用iPad / iPhone图像命名约定?

时间:2010-10-28 07:04:21

标签: iphone objective-c ipad uiimage

在我的应用程序中,我需要根据iPad / iPhone 4 / iPhone 3设备获取正确的图像。

例如:

iPhone 3 / iPod的图像名称为a.png(宽度为40,高度为20),iPhone 4的图像为a@2x.png(宽度为80,高度为40)。

如果我提到了代码

UIImage *myImage=[UIImage imageNamed:@"a.png"];

myImage包含(80 * 40)图像,如果它是iPhone 4。 如果它是iPod / iPhone 3,myImage包含(40 * 20)图像。

我的问题是我如何获得iPad(60 * 30)的图像,就像上面的命名惯例一样。

我尝试将a~ipad.png作为图片名称,但它不起作用。你能指出哪里有错误吗?

如果我使用[UIDevice currentDevice];使用条件isIpod - >加载(60 * 30)图像 否则加载iPhone / iPod的图像就可以了。

但是我需要在不使用条件的情况下使用它,并使用像{/ 1}}这样的iPhone / iPod,a.png用于iPhone 4,同样用于iPad。

提前致谢。

5 个答案:

答案 0 :(得分:21)

我知道这是老帖子,但我认为截图给出了更明确的命名约定。

enter image description here

使用最新设备: button@3x~iphone.png button@3x~ipad.png

答案 1 :(得分:18)

根据此Apple文档,设备有一个图像命名约定:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/ImageSoundResources/ImageSoundResources.html#//apple_ref/doc/uid/10000051i-CH7-SW17

它说使用" ~iphone"适用于iPhone,iPad没有后缀。虽然有传闻说我被告知" ~ipad"也有效。

答案 2 :(得分:8)

iPad没有图像命名约定,仅适用于视网膜显示,因此您的图像看起来很清晰。如果你想支持iPad,那么你需要为它创建一个单独的布局(单独的xib),在大多数情况下甚至是单独的图像集,因为你给了一个更大的布局。

但是,您可以为自己创建一个命名约定,并将字符串名称传递给静态函数,该函数将根据设备将名称转换为iPad / iphone。

E.g。

[UIImage imageNamed: [MyAppUtils getImageName:@"a.png"]];

并且在getImageName函数中,您可以进行转换(如果是iphone则使用相同的名称,否则重命名为其他名称)

答案 3 :(得分:7)

除了Nate的帖子之外,Apple的具体文档描述了命名约定,可以在以下网址找到:

Supporting High-Resolution Screens - Updating Your Image Resource Files

根据链接,命名约定模式如下:

  • 标准:<ImageName><device_modifier>.<filename_extension>
  • 高分辨率:<ImageName>@2x<device_modifier>.<filename_extension>

例如:“MyImage@2x~ipad.png”用于高分辨率iPad专用图像,或“MyImage~iphone.png”用于标准版iPhone特定图像。

答案 4 :(得分:0)

我正在使用我在创建任何应用程序之前首先开发的“资源管理器”。 此资源管理器可以在加载资源配置文件(主要是XML)后决定命名约定。 这样一切对GUI的程序员来说都是透明的,你只需要担心创建内容:)