我正在下载大量图片以显示给用户 每个图像都有512x512。
在正常分辨率的iPhone中,一切正常,
但在iPhone4中,它们看似缩放。
如果从资源中提取此图像,
我只需在图像名称中添加@2x
,一切都会正常工作,
问题是这些图像是从网络动态加载的。
如何防止此UIImageViews在视网膜显示屏上放大?
编辑: 这是sreenshot:
http://img836.imageshack.us/img836/5173/screenshot20101104at104.png
谢谢大家。
答案 0 :(得分:6)
看一下这段代码 - 当我想控制图像是否加载scale = 2或scale = 1时,我在UIImage类别中使用它...看看NSData取出文件内容的位置(在我的代码中) )并替换为从网络上获取图像的代码:
if ( [[[UIDevice currentDevice] systemVersion] intValue] >= 4 && [[UIScreen mainScreen] scale] == 2.0 ) {
if ( [[NSFileManager defaultManager] fileExistsAtPath:path] ) {
return [self initWithCGImage:[[UIImage imageWithData:[NSData dataWithContentsOfFile:path]] CGImage] scale:2.0 orientation:UIImageOrientationUp];
}
} else [ load here the image via imageWithContentsOfFile or whatever ]
所以诀窍在于UIImage类的“initWithCGImage”的“scale”参数,如果你正在加载高分辨率图像则传递2.0,或者如果你正在加载低分辨率图像则传递1.0 - 这就像你最大的控制你接管高分辨率图像加载。
最好,马林
答案 1 :(得分:1)
也许尝试检查设备是否有视网膜显示器,以及它是否尝试缩小图像。你可以看到它是否有视网膜显示:
if ( [[[UIDevice currentDevice] systemVersion] intValue] >= 4 && [[UIScreen mainScreen] scale] == 2.0 ) {
//do the scaling of image(s)
}
如果可以,请告诉我。