I created app that perfectly worked on xcode 5. But when i run it on xcode 6 with iphone 6 simulator, it's giving me an error:
CUICatalog: Can't find rendition for name: someImage@2x~ipad.png scale factor: 2 device idiom: 1 device subtype: 568
I know this probably isn't the answer you want, but I had the exact same problem, and simply renaming the image fixed the problem.
In other words, I copied the original file that wouldn't load to another file in the same directory, with a different name.
I then added this new file to the Xcode project and removed the first one.
I changed the code to reflect the new image name:
// Asset Catalog problem loading this:
// [imgBackground setImage:[UIImage imageNamed:@"[email protected]"]];
[imgBackground setImage:[UIImage imageNamed:@"Home_BG-568h"]];
I slightly changed the previous developer's naming convention, to go with [email protected]
.
Hope this helps someone.
I discovered a way to load images by circumventing Apple's naming convention interpretation. Instead of using [UIImage imageNamed:]
, load the image as binary into an NSData
and then initialize a UIImage
with that data like so:
NSData* imageData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Icon@57x57" ofType:@"png"]];
UIImage* icon = [UIImage imageWithData:imageData];
Be warned, though, that there is no caching with this method and calling it multiple times will load a new image each time. If you want caching you'll have to implement that logic yourself.
The scale of the image may also not be correct. If it is a retina scale (@2x) image, you can adjust the scale of the loaded image like so:
icon = [UIImage imageWithCGImage:icon.CGImage scale:2.f orientation:UIImageOrientationUp];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With