我想将一些图像作为nsdata保存到plist中并稍后检索它。 但我遇到了问题。
问题是,如果UIImage的比例为2.0,那么我以后再用
加载它[UIImage imageWithData:]
图片显示2x尺寸
我想要的是喜欢
的行为[UIImage imageNamed:]
将根据屏幕比例加载。
我该怎么做?
答案 0 :(得分:3)
我终于通过这段代码解决了这个问题:
UIImage *image = [UIImage imageWithData:imageData];
if (isRetinaDisplay) {
image = [UIImage imageWithCGImage:[image CGImage] scale:2.0f orientation:UIImageOrientationUp];
}
答案 1 :(得分:2)
您可以考虑屏幕是Retina的可能性如下:
CGFloat screenScale = [UIScreen mainScreen].scale;
UIImage *image = [UIImage imageWithData:data scale:screenScale];
此代码在一行中涵盖两种情况(Retina /非Retina)。
答案 2 :(得分:1)
从iOS 6开始,您也可以使用
+ (UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale NS_AVAILABLE_IOS(6_0);
答案 3 :(得分:0)
scale属性是只读的,但你可以做的是将UIImageView子类化为可写(或根据它运行的设备使其自动化)。
// ImageView.h
@interface ImageView : UIImageView
// ImageView.m
CGFloat scaleProperty = 1.0;
@implementation ImageView
- (void)setScale:(CGFloat)scale
{
scaleProperty = scale;
}
- (CGFloat)scale
{
return scaleProperty;
}
@end