iPad/iPhone通用应用程序图片命名规则?

14

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

例如:

我有一张名为a.png(宽40、高20)的图像,用于iPhone 3/iPod,以及一张名为a@2x.png(宽80、高40)的图像,用于iPhone 4。

如果我提到了代码:

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

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

我的问题是如何按照上述命名约定获取iPad(60*30)的图像。

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

如果使用[UIDevice currentDevice];条件是IsIpod->load(60*30)图像,否则加载iPhone/iPod的图像,那么它可以正常工作。

但是,我需要在不使用条件的情况下使其正常工作,并使用类似于iPhone/iPod的a.png、iPhone 4的a.@2x.png以及iPad的相同命名约定。

提前致谢。

5个回答

21

我知道这是一篇旧文章,但我认为截图可以更清晰地说明命名约定。

在此输入图像描述

最新的设备示例: button@3x~iphone.pngbutton@3x~ipad.png


18

以下是设备特定资源命名约定的苹果文档的更新链接。 - Amar

8

iPad没有图像命名约定,它只适用于视网膜显示屏,以使您的图像显示清晰。如果要支持iPad,则需要为其创建单独的布局(单独的xib),在大多数情况下甚至需要单独设置一组图像,因为您拥有更大的布局。

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

例如:

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

在getImageName函数内部,你可以进行转换(如果是iPhone使用相同的名称,否则改为其他名称)。


7
根据 Nate 的帖子,苹果公司关于命名规则的具体文档可以在以下链接中找到: 支持高分辨率屏幕 - 更新图像资源文件 根据该链接,命名规则如下:
  • 标准: <ImageName><device_modifier>.<filename_extension>
  • 高分辨率: <ImageName>@2x<device_modifier>.<filename_extension>
例如:“MyImage@2x~ipad.png”代表高分辨率iPad专用图像,“MyImage~iphone.png”代表标准分辨率iPhone专用图像。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接