应用程序未能看到@ 2x图像

时间:2010-09-08 15:36:05

标签: iphone uiimage

这让我疯了。一直在寻找2天,我找不到任何真正的解决方案或解释为什么会发生这种情况。我知道这里有一些线索,以及其他一些地方,但他们一直没有帮助。我已经阅读了有关此事的Apple文档。

我的应用中有正常和@ 2x图像。它们被正确命名(edit_image.png和edit_image@2x.png)。它们的大小正确(正常为60x60,@ 2x为120x120)。它们都被复制到应用程序包中,当我检查内容时,我可以在根目录中看到它们。

我通过拨打[UIImage imageNamed:@"edit_image"]来抓取图片。它永远不会抓住2倍的图像。它只能看到1x图像。但是,如果我首先检查比例,并使用此代码:

if ([[UIScreen mainScreen] scale] == 1) {
    NSLog(@"test");
    editImage = [UIImage imageNamed:@"edit_image"];
} else {
    editImage = [UIImage imageNamed:@"edit_image@2x"];
}

然后它会抓取正确的图像。我尝试了一切。我删除了项目中的高分辨率,清理,重新添加高分辨率,清洁然后建立,没有骰子。我删除了所有图像,并重新添加它们,没有骰子。我做了我能想到的一切。这到底是怎么回事?

4 个答案:

答案 0 :(得分:4)

您是否正在为iPhone和iPhone创建通用应用程序iPad兼容。如果有通用应用程序,那么您需要创建3组图像:

1)edit_image~iPad.png

2)edit_image~iphone.png

3)edit_image@2x~iphone.png

每个具有相同的72像素/英寸的分辨率。虽然您需要为@ 2x图像提供双倍大小,我认为您已经完成了这个。

现在,尝试下面的代码

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"edit_image" ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:filePath];
  

重要提示:创建时   您的高分辨率版本   图像,将新版本放入   您的申请中的相同位置   捆绑作为原始。

来源:http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/SupportingResolutionIndependence/SupportingResolutionIndependence.html

答案 1 :(得分:1)

我犯过的两个愚蠢的错误可能导致这个问题:

  1. 无意中命名小 版本@ 2x而不是大 那些
  2. 拥有大版本 稍微错过了(按一个像素)

答案 2 :(得分:0)

您不需要添加“@2x”位,也不需要if-else逻辑。只需使用[UIImage imageNamed:@"edit_image"]

答案 3 :(得分:0)

我遇到了完全相同的问题,最后找到了解决方案(经过2天的搜索)。

在我的情况下,@ 2x图片的名称与正常尺寸的图片不完全匹配:tileSet.pngtileset@2x.png

让人难以发现的是,@ 2x文件 在Finder和XCode中具有正确的名称。我只能通过在Preview中打开图像并查看Inspector来发现问题。我不太了解Mac文件系统来解释这是如何发生的,但是一旦我将文件重命名为乱码,然后将其重命名为tileSet@2x.png,一切都按预期开始工作。