当我们需要从某个URL下载图像并将其显示在两种设备上时 - Retina(带有2x图像)和常规设备 - 我们应该有两个不同的图像URL来处理这个吗?
对于资源包中的图像,我们同时保留xyz.png和xyz@2x.png并且工作正常。
对于我们从服务器获取的图像,我们是否需要为这两种图像分别设置图像URL,并使用相同的命名约定(xyz.png和xyz@2x.png)在本地缓存它们?
请在这里说清楚。
答案 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];