3

可能重复:
iOS 5.1 与 Xcode 4.2 和 iPad 3 中的视网膜

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

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

或者通过 IB,它没有给我预期的结果(比如根据此处所述的 iPad 显示器选择正确版本的图像),并且无论哪个 iPad 运行应用程序都只显示 image.png,尽管当我尝试通过以下方式导入图像:

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”。没用。
  • 我尝试只输入imageIB 插槽。没用。无论如何,它都会获取 image.png 。
  • 我尝试使用someImageView.image = [UIImage imageNamed:@"image@2x.png"];它在任何设备中显示 2x 图像。
  • 我尝试使用image@2x~ipad.pngand image~ipad.png。没用。
  • 所有图像集命名正确,大小正确,并已全部导入到同一组/文件夹中的项目中。
  • 它不是一个通用的,而是一个 iPad 应用程序。
  • 在此过程中,我已经多次清理了构建。

任何帮助是极大的赞赏!

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

*更新 2:我设法通过将 SDK 5.1 合并到 Xcode 中并将其用作基础 SDK 来实现此功能。当我在 SDKs 文件夹中同时拥有 SDK 5 和 5.1 时,它不起作用,当我删除 SDK 5 版本时它起到了作用。

4

2 回答 2

0

您是否尝试将~ipad后缀添加到您的图像?所以你的视网膜 iPad 图像应该被重命名并像这样调用:

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

希望这可以帮助。

于 2012-10-01T18:21:04.850 回答
0

默认情况下它不起作用,因为 Xcode 4.3.1 是第一个支持新 iPad (retina) 的版本

如果你想让它正常工作,请检查这个答案

于 2012-10-01T19:47:41.717 回答