Retina支持imageNamed @ 2x无效

时间:2012-10-01 18:03:02

标签: xcode xcode4.2 resolution retina-display imagenamed

  

可能重复:
  iOS 5.1 with Xcode 4.2 and retina in iPad 3

我正试图在iPad 2上加载我的应用程序(因为它在iPad 3上运行得很好)。 我缩小了图像,现在有2组图像,如: image.png和image@2x.png。 当我尝试加载图像时:

someImageView.image = [UIImage imageNamed:@"image.png"];

或者通过IB,它没有给我我预期的结果(比如选择正确的图像版本,具体取决于所显示的here的iPad显示)并且只显示image.png,无论哪个iPad运行应用程序,但是当我尝试通过以下方式导入图像时:

NSString* imagePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"];
UIImage* someImage = [[UIImage alloc] initWithContentsOfFile:imagePath];
someImageView.image = someImage;

这很好用,当我在iPad 3上运行应用程序时,它使用@ 2x png文件。 虽然这有效,但我不确定是否必须分配和发布我使用的每个图像,因为我通过IB使用了一些图像。 这是正常行为吗?

我使用了SDK 4,4.2和5,但没有改变,我也使用Xcode 4.2,因为我不想切换到Lion。

  • 我尝试过不使用someImageView.image = [UIImage imageNamed:@"image.png"];,只选择IB插槽中的图像“image.png”。没用。
  • 我尝试在IB插槽中输入image。没工作。无论如何,它都会拾取image.png。
  • 我尝试使用someImageView.image = [UIImage imageNamed:@"image@2x.png"];它会在任何设备中显示2x图像。
  • 我尝试使用image@2x~ipad.pngimage~ipad.png。没用。
  • 所有图像集都命名正确,大小正确并且已全部导入到同一组/文件夹中的项目中。
  • 它不是通用的,而是iPad应用程序。
  • 在此过程中,我已多次清理构建。

非常感谢任何帮助!

*更新:UIImage[UIScreen mainScreen].scale返回时切换到@ 2x 2.当我检查时,它返回1,这就是@ 2x未激活的原因。那么有谁知道4.2不识别iPad3视网膜显示器?我找到了类似的here

*更新2:我设法通过将SDK 5.1合并到Xcode并将其用作基本SDK来实现这一目的。当我在SDKs文件夹中同时拥有SDK 5和5.1时,它不起作用,当我删除SDK 5版本时,它作为魅力。

2 个答案:

答案 0 :(得分:0)

您是否尝试在图片中添加~ipad后缀?所以你的视网膜iPad图像应该重命名并调用如下:

[UIImage imageNamed:@"image@2x~ipad.png"]

希望这会有所帮助。

答案 1 :(得分:0)

默认不起作用,因为Xcode 4.3.1是支持新iPad(视网膜)的第一个版本

如果你想让它继续工作,check this answer