我创建了完全适用于xcode 5的应用程序。 但是当我使用iphone 6模拟器在xcode 6上运行它时,它给了我一个错误:
CUICatalog:无法找到名称的再现:someImage@2x~ipad.png比例因子:2设备成语:1设备子类型:568
答案 0 :(得分:4)
我知道这可能不是您想要的答案,但我遇到了完全相同的问题,只需重命名图像就可以解决问题。
换句话说,我将原始文件复制到同一目录中的另一个文件中,并使用不同的名称。
然后我将这个新文件添加到Xcode项目并删除了第一个。
我更改了代码以反映新的图片名称:
// Asset Catalog problem loading this:
// [imgBackground setImage:[UIImage imageNamed:@"Home_BG@5g.png"]];
[imgBackground setImage:[UIImage imageNamed:@"Home_BG-568h"]];
我略微改变了之前开发者的命名惯例,与Home_BG-568h@2x.png
一起使用。
希望这有助于某人。
答案 1 :(得分:2)
我发现了一种通过规避Apple的命名约定解释来加载图像的方法。不要使用[UIImage imageNamed:]
,而是将图片作为二进制文件加载到NSData
中,然后使用该数据初始化UIImage
,如下所示:
NSData* imageData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Icon@57x57" ofType:@"png"]];
UIImage* icon = [UIImage imageWithData:imageData];
但请注意,此方法没有缓存,多次调用它会每次加载一个新图像。如果你想要缓存,你必须自己实现这个逻辑。
图像的比例也可能不正确。如果是视网膜刻度(@ 2x)图像,您可以调整加载图像的比例,如下所示:
icon = [UIImage imageWithCGImage:icon.CGImage scale:2.f orientation:UIImageOrientationUp];
答案 2 :(得分:0)
我在我的通用应用程序项目中遇到了同样的问题。
解决方案也是重命名所有"通用图像"用于两个或仅一个设备(iPhone和iPad || iPhone || iPad)。例如。 someimage@2x.png因为没有对应物存在也不需要......