Retina display and [UIImage initWithData]

I need to initialise images from raw data downloaded from a server which delivers the correct size of image based on the type of iPhone client.

I know that I should be setting the scale value to be 2.0 on the 640x960 display, however this is a readonly property and cannot be set during the init when using initWithData.

Any ideas?


I'm not aware of anything you can embed in the image data itself to tell the phone that it's a @2x image, but something like this should work:

UIImage * img = ...;
img = [UIImage imageWithCGImage:img.CGImage scale:2 orientation:img.imageOrientation];

Since iOS 6.0 UIImage has method + imageWithData:scale:, you can pass 2.0 as scale for retina.


You can pass [[UIScreen mainScreen] scale] as the scale parameter instead of 2.0f.