关于@ 2X的问题

时间:2010-11-20 10:38:00

标签: iphone cocoa-touch ios4

1.我使用下面的代码截取截图。有必要更改它以获得高分辨率

UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.window.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

2.如果我只使用640 * 960分辨率的图像来实现低质量和高质量,会发生什么? (表示不使用@ 2x的图像)

1 个答案:

答案 0 :(得分:3)

这只会采用普通(320x480)分辨率截图。所以回答1,是的。老一代设备也可以做双分辨率,屏幕无法显示。

要在设备的res处截取屏幕截图,您可以执行以下操作:

CGSize size = self.view.bounds.size;
CGFloat scale = 1.0f;
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
    scale = [[UIScreen mainScreen] scale];
    size = CGSizeApplyAffineTransform(size, CGAffineTransformMakeScale(scale, scale));
}

UIGraphicsBeginImageContext(size);

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextScaleCTM(context, scale, scale);

[self.view.layer renderInContext:context]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

在旧设备上使用双重分辨率确实有效,如果在屏幕上显示,则会缩小比例。但不推荐,只是浪费。