视网膜显示和

我需要从服务器下载的原始数据初始化图像,根据iPhone客户端的types提供正确的图像大小。

我知道我应该在640×960显示器上将scale值设置为2.0,但是这是只读属性,在使用initWithData时不能在init中设置。

有任何想法吗?

我不知道任何你可以embedded图像数据本身告诉手机,这是一个@ 2x图像,但这样的事情应该工作:

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

由于iOS 6.0 UIImage方法+ imageWithData:scale:你可以通过2.0作为规模的视网膜。

您可以传递[[UIScreen mainScreen] scale]作为scale参数而不是2.0f

把它放在你的.m文件中,如果你需要的话或者在一个导入的类上(当调用函数IMAO时,c的语法更好)

 BOOL isRetina(){ if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { return [[UIScreen mainScreen] scale] == 2.0; } return NO; } 

然后在用服务器数据创build映像时:

 [UIImage imageWithData:dataFromServer scale:isRetina()?2:1]; 

AFAIK你不需要自己设定比例值。 操作系统将为您处理点像素转换。