Iphone 将UIImage保存为NSData时的缩放问题

Iphone 将UIImage保存为NSData时的缩放问题,iphone,ios,uiimage,scale,Iphone,Ios,Uiimage,Scale,我想将一些图像作为nsdata保存到plist中,稍后再检索它。 但我有个问题 问题是,如果UIImage的比例为2.0,那么当我稍后使用 [UIImage imageWithData:] 图像显示2倍大小 我想要的是喜欢他们的行为 [UIImage imageNamed:] 将根据屏幕比例加载 如何执行此操作?缩放属性是只读的,但您可以做的是将UIImageView子类化以使其可写(或根据其运行的设备使其自动) 我最终通过以下代码解决了这个问题: UIImage *image = [UII

我想将一些图像作为nsdata保存到plist中,稍后再检索它。 但我有个问题

问题是,如果UIImage的比例为2.0,那么当我稍后使用

[UIImage imageWithData:]
图像显示2倍大小

我想要的是喜欢他们的行为

[UIImage imageNamed:]
将根据屏幕比例加载


如何执行此操作?

缩放属性是只读的,但您可以做的是将UIImageView子类化以使其可写(或根据其运行的设备使其自动)


我最终通过以下代码解决了这个问题:

UIImage *image = [UIImage imageWithData:imageData];
if (isRetinaDisplay)  {
    image = [UIImage imageWithCGImage:[image CGImage] scale:2.0f orientation:UIImageOrientationUp];
}

由于iOS 6,您也可以使用

+ (UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale NS_AVAILABLE_IOS(6_0);

您可以考虑屏幕可能是这样的:

CGFloat screenScale = [UIScreen mainScreen].scale;
UIImage *image = [UIImage imageWithData:data scale:screenScale];
该代码在一行中涵盖了两种情况(视网膜/非视网膜)

CGFloat screenScale = [UIScreen mainScreen].scale;
UIImage *image = [UIImage imageWithData:data scale:screenScale];