通用应用程序iPad/iPhone图像命名约定?
在我的应用程序中,我需要基于iPad/iPhone4/iPhone3设备获得正确的图像 例如: 我有一张iphone3/iPod的图片名为通用应用程序iPad/iPhone图像命名约定?,iphone,objective-c,ipad,uiimage,Iphone,Objective C,Ipad,Uiimage,在我的应用程序中,我需要基于iPad/iPhone4/iPhone3设备获得正确的图像 例如: 我有一张iphone3/iPod的图片名为a.png(宽40,高20),和a@2x.png(宽80,高40)适用于iPhone 4 如果我提到代码 UIImage *myImage=[UIImage imageNamed:@"a.png"]; 如果是iPhone4,myImage包含(80*40)个图像。 如果是iPod/iPhone3,myImage包含(40*20)个图像 我的问题是,我如何获得
a.png
(宽40,高20),和a@2x.png
(宽80,高40)适用于iPhone 4
如果我提到代码
UIImage *myImage=[UIImage imageNamed:@"a.png"];
如果是iPhone4,myImage包含(80*40)个图像。
如果是iPod/iPhone3,myImage包含(40*20)个图像
我的问题是,我如何获得像上述命名约定一样的iPad(60*30)的图像
我试着给一个~ipad.png
作为图像名,但它不起作用。你能指出哪里有错误吗
如果我使用使用[UIDevice currentDevice]的条件代码>isIpod->加载(60*30)图像
否则,为iPhone/iPod加载图像,工作正常
但我需要让它在不使用条件的情况下工作,并使用命名约定,如iPhone/iPod的a.png
,iPhone4和iPad的a.@2x.png
提前感谢。iPad没有图像命名约定,它只用于视网膜显示器,这样您的图像就会显得清晰。如果你想支持iPad,那么你需要为它创建一个单独的布局(单独的xib),在大多数情况下,甚至是单独的图像集,因为你得到了一个更大的布局
但是,您可以为自己创建命名约定,并将字符串名称传递给静态函数,该函数将根据设备将名称转换为iPad/iphone
例如
在getImageName函数中,您可以进行转换(如果是iphone,则使用相同的名称,否则重命名为其他名称)我使用的是我在创建任何应用程序之前首先开发的“资源管理器”。
此资源管理器可以在加载资源配置文件(主要是XML)后决定命名约定。
通过这种方式,所有内容对GUI的程序员都是透明的,您只需担心创建内容:)根据此Apple文档,设备有一个图像命名约定:
它说iphone使用“~iphone”,iPad没有后缀。尽管有传闻说“~ipad”也可以使用。关于Nate的帖子,苹果公司描述命名约定的具体文档可以在以下网站找到:
根据链接,命名约定模式如下所示:
- 标准:
- 高分辨率:
@2x.
例如:MyImage@2x~ipad.png”表示高分辨率的ipad特定图像,或“MyImage~iphone.png”表示标准分辨率的iphone特定图像。我知道这是一篇老文章,但我认为截图提供了有关命名约定的更清晰的概念
使用最新设备:button@3x~iphone.png和button@3x~ipad.png设备特定资源命名约定的更新链接。
[UIImage imageNamed: [MyAppUtils getImageName:@"a.png"]];