让我们首先同意您UIImageView
的 60x60点,这意味着标准显示器为 60x60像素,视网膜显示器为 120x120像素。
对于UIImageView
60x60 点,对于标准显示器,图像应为 60x60 像素(比例为 1.0 ),而对于视网膜显示器,图像应为 120x120 像素(比例为 2.0 )。这意味着您UIImage
应该始终有一个size
60x60 点,但应该有一个不同的scale
取决于显示分辨率。
从服务器获取图像数据时,您应该首先检查设备屏幕的比例,然后请求适当的图像大小(以像素为单位),如下所示:
if ([UIScreen mainScreen].scale == 1.0) {
// Build URL for 60x60 pixels image
}
else {
// Build URL for 120x120 pixels image
}
然后,您应该将图像数据放在适当UIImage
的大小60x60
点中scale
:
NSData *imageData = [NSData dataWithContentsOfURL:url];
CFDataRef cfdata = CFDataCreate(NULL, [imageData bytes], [imageData length]);
CGDataProviderRef imageDataProvider = CGDataProviderCreateWithCFData (cfdata);
CGImageRef imageRef = CGImageCreateWithJPEGDataProvider(imageDataProvider, NULL, true, kCGRenderingIntentDefault);
UIImage *image = [[UIImage alloc] initWithCGImage:imageRef
scale:[UIScreen mainScreen].scale
orientation:UIImageOrientationUp];
CFRelease (imageRef);
CFRelease (imageDataProvider);
CFRelease(cfdata);
希望这可以帮助。