CUICatalog:无法找到名称:someimage@2x~ipad.png比例因子:2设备成语:1设备子类型:568

我创建了完全适用于xcode 5的应用程序。但是当我使用iphone 6模拟器在xcode 6上运行它时,它给了我一个错误:

CUICatalog:无法找到名称的再现:someImage@2x~ipad.png比例因子:2设备成语:1设备子类型:568

我知道这可能不是你想要的答案,但我有完全相同的问题,只需重命名图像就可以解决问题。

换句话说,我将原始文件复制到同一目录中的另一个文件,并使用不同的名称。

然后我将这个新文件添加到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一起使用。

希望这有助于某人。

我发现了一种通过规避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]; 

我在我的通用应用程序项目中遇到了同样的问题。

解决方案也是重命名所有“通用图像”,用于两个或仅一个设备(iPhone && iPad || iPhone || iPad)。 EG someimage@2x.png因为没有对应物存在也不需要……