2010-11-04 68 views
0

我正在下载很多图像以显示给用户。
每张图片都有512x512。iPhone4:防止UIImageView缩放

在正常分辨率的iPhone中,一切正常,
但在iPhone4中,它们显示缩放。

如果该图像是从资源被提取,
我只想补充一个@2x到图像名称和一切会工作,
的问题是,这种图像是动态地从网页加载。

我该如何防止这个UIImageViews在视网膜显示器上放大?

编辑: 这里是撷取画面:

http://img836.imageshack.us/img836/5173/screenshot20101104at104.png

谢谢大家。

+0

你是什么意思的扩大规模?你可以张贴一些截图吗? – 2010-11-04 10:42:52

+0

你的意思是你的iphone4上的图像显示为256x256? – Bongeh 2010-11-04 10:51:41

+0

它们的真实分辨率是512x512,但在iPhone4中,它们显示的尺寸是原来的两倍,因为每个点在视网膜显示中都是两个像素。我怎样才能防止这一点? – Tsimmi 2010-11-04 11:03:02

回答

6

看看这段代码 - 我在UIImage类中使用它,当我想控制图片是否会被加载scale = 2或scale = 1 ...看看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”的“规模”参数,通过2.0如果要加载高分辨率图像,或者如果你正在加载低分辨率图像则通过1.0 - 这就像你接管高分辨率图像加载的最大控制。

最好,马林

1

也许试着检查设备是否有视网膜显示,如果它确实尝试缩小图像。你可以看看它是否有视网膜显示:

if ([[[UIDevice currentDevice] systemVersion] intValue] >= 4 && [[UIScreen mainScreen] scale] == 2.0) { 
    //do the scaling of image(s) 
} 

让我知道,如果这是诀窍。