在我的应用程序中,我需要根据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。
提前致谢。
答案 0 :(得分:21)
我知道这是老帖子,但我认为截图给出了更明确的命名约定。
使用最新设备: button@3x~iphone.png 和 button@3x~ipad.png
答案 1 :(得分:18)
根据此Apple文档,设备有一个图像命名约定:
它说使用" ~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的程序员来说都是透明的,你只需要担心创建内容:)