我需要从服务器下载的原始数据初始化图像,该服务器根据iPhone客户端的类型提供正确的图像大小。
我知道我应该在640x960显示器上将比例值设置为2.0,但这是一个只读属性,在初始化期间使用initWithData时无法设置。
有什么想法吗?
答案 0 :(得分:93)
我不知道你可以嵌入到图像数据中的任何东西告诉手机它是一个@ 2x图像,但这样的东西应该有用:
UIImage * img = ...;
img = [UIImage imageWithCGImage:img.CGImage scale:2 orientation:img.imageOrientation];
答案 1 :(得分:19)
由于iOS 6.0 UIImage
包含方法+ imageWithData:scale:
,因此您可以将2.0
作为视网膜的比例传递。
答案 2 :(得分:7)
您可以将[[UIScreen mainScreen] scale]
作为比例参数而不是2.0f
。
答案 3 :(得分:0)
Swift3,4版
let image = UIImage(data: imageData, scale: UIScreen.main.scale)
答案 4 :(得分:-1)
如果你想要或在导入的类上将它放在.m中(调用函数IMAO时c的语法更好)
BOOL isRetina(){
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
return [[UIScreen mainScreen] scale] == 2.0;
}
return NO;
}
然后在使用服务器数据创建图像时:
[UIImage imageWithData:dataFromServer scale:isRetina()?2:1];
答案 5 :(得分:-4)
AFAIK您无需自行设置比例值。操作系统将为您处理像素转换。