这让我疯了。一直在寻找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"];
}
然后它会抓取正确的图像。我尝试了一切。我删除了项目中的高分辨率,清理,重新添加高分辨率,清洁然后建立,没有骰子。我删除了所有图像,并重新添加它们,没有骰子。我做了我能想到的一切。这到底是怎么回事?
答案 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];
重要提示:创建时 您的高分辨率版本 图像,将新版本放入 您的申请中的相同位置 捆绑作为原始。
答案 1 :(得分:1)
我犯过的两个愚蠢的错误可能导致这个问题:
答案 2 :(得分:0)
您不需要添加“@2x
”位,也不需要if-else逻辑。只需使用[UIImage imageNamed:@"edit_image"]
。
答案 3 :(得分:0)
我遇到了完全相同的问题,最后找到了解决方案(经过2天的搜索)。
在我的情况下,@ 2x图片的名称与正常尺寸的图片不完全匹配:tileSet.png
和tileset@2x.png
。
让人难以发现的是,@ 2x文件 在Finder和XCode中具有正确的名称。我只能通过在Preview中打开图像并查看Inspector来发现问题。我不太了解Mac文件系统来解释这是如何发生的,但是一旦我将文件重命名为乱码,然后将其重命名为tileSet@2x.png
,一切都按预期开始工作。