1.我使用下面的代码截取截图。有必要更改它以获得高分辨率
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
2.如果我只使用640 * 960分辨率的图像来实现低质量和高质量,会发生什么? (表示不使用@ 2x的图像)
答案 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();
在旧设备上使用双重分辨率确实有效,如果在屏幕上显示,则会缩小比例。但不推荐,只是浪费。