iPhone 5与iPhone 4的图像命名

时间:2014-03-21 05:25:43

标签: ios objective-c sprite-kit

我有iPhone 5和iPhone 4的视网膜图像。唯一的区别是图像的高度,分辨率是相同的。

当我指定iPhone 4图像时,我会执行myImage@2x.png而对于iPhone 5,我会执行myImageh@2x.png

然后在代码中

if (iPhone_5)
       ... imageNamed:@"myImageh@2x.png"];
else
       ... imageNamed:@"myImage@2x.png"];

问题:这在iOS模拟器上运行良好,但在我的实际iPhone 5上,图像被放大到两倍大小。当我做if (iphone_5) ... imageNamed:@"myImage.png"]它在真正的iPhone 5上工作正常,但模拟器抱怨它无法找到图像文件。

这样做的正确方法是什么?

编辑:我忘了说我的图像是在纹理图集中,因为这是一个spritekit游戏。这有什么改变吗?

6 个答案:

答案 0 :(得分:3)

不要在名称中添加@2x。当您使用[UIImage imageNamed:@"image.png"]访问图像时,将自动选择正确的图像。

试试

if (iPhone_5)
       ... imageNamed:@"myImageh.png"];
else
       ... imageNamed:@"myImage.png"];

答案 1 :(得分:3)

编译器没有命名约定来区分iPhone 4和iPhone 5图像(仅限高度差异)。 @2x只会区分所有iOS设备的视网膜和非视网膜图像。

希望这有帮助。

答案 2 :(得分:1)

只需编写[UIImage imageNamed:@"myImage.png"]代码,无需添加@2x。根据设备和屏幕尺寸,它将自动采用正确的。

注意:您必须在捆绑包中添加两个图像(myImage.png & myImage@2x.png)。否则它不会工作。

答案 3 :(得分:1)

使用新的资产目录功能。创建图像集,然后将设备设置从通用更改为特定于设备。检查iPhone和Retina 4英寸。然后你可以添加三个版本(@ 1x / @ 2x和R4)的图像。然后你可以使用imageNamed:@" Image"并且不必担心屏幕尺寸等的任何检查。系统将为您完成所有操作。

Device Specific

3 Versions

答案 4 :(得分:1)

真正的问题是纹理图集没有正确加载。有关解决方案Sprite Kit Textures Acting Funny

,请参阅此问题

答案 5 :(得分:1)

不要使用文件扩展名或" @ 2x"在imageNamed:中 使用不带扩展名的名称,例如@" image"。
这样它将根据设备加载正确的图像。