下载正常图像Vs视网膜设备图像(2x)

时间:2011-04-01 20:58:54

标签: iphone cocoa-touch ios uiimageview uiimage

当我们需要从某个URL下载图像并将其显示在两种设备上时 - Retina(带有2x图像)和常规设备 - 我们应该有两个不同的图像URL来处理这个吗?

对于资源包中的图像,我们同时保留xyz.png和xyz@2x.png并且工作正常。

对于我们从服务器获取的图像,我们是否需要为这两种图像分别设置图像URL,并使用相同的命名约定(xyz.png和xyz@2x.png)在本地缓存它们?

请在这里说清楚。

2 个答案:

答案 0 :(得分:24)

您可以检查设备是否具有高分辨率视网膜显示器,并根据该设备下载不同的图像。不要为照片和接口尺寸无论如何都要缩放的东西而烦恼。
您可以使用

创建下载图像的缩放版本
UIImage *image = //download...
image=[UIImage imageWithCGImage:[image CGImage] scale:2.0 orientation:UIImageOrientationUp];

请记住,缩放的100x100图像将成为50x50点图像(2.0刻度)。

首先检查您是否有视网膜显示器

BOOL retina = NO;
if([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
    retina = [[UIScreen mainScreen] scale] == 2.0 ? YES : NO;

答案 1 :(得分:0)

CGFloat screenScale = [UIScreen mainScreen].
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:myUrl] scale:screenScale];