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

mac*_*mac 14 iphone objective-c uiimage ipad

在我的应用程序中,我需要根据设备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"];
Run Code Online (Sandbox Code Playgroud)

如果它是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加载图像它工作正常.

但我需要在不使用条件的情况下使用它,并使用像a.pngiPhone/iPod,a.@2x.pngiPhone 4和iPad 等命名约定.

提前致谢.

bri*_*ple 21

我知道这是旧帖子,但我认为截图给出了关于命名约定的更清晰的想法.

在此输入图像描述

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


Nat*_*sen 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"也有效.


Man*_*nny 8

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

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

例如

[UIImage imageNamed: [MyAppUtils getImageName:@"a.png"]];
Run Code Online (Sandbox Code Playgroud)

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


And*_*rew 7

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

支持高分辨率屏幕 - 更新图像资源文件

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

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

例如:"MyImage@2x~ipad.png"用于高分辨率iPad专用图像,或"MyImage~iphone.png"用于标准版本的iPhone专用图像.