在视网膜显示中,从苹果的私有API UIGetScreenImage()
返回的屏幕截图图像 640x1136 ,但其他替代代码仅提供320x568。是否可以在@ 2x模式下拍摄屏幕?
这是我正在使用的代码
-(UIImage*)getScreenShot:(CALayer*)layer
{
UIGraphicsBeginImageContextWithOptions(layer.frame.size, NO, 0.0);
[layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
[self getScreenShot:self.window.layer];
答案 0 :(得分:1)
关于如何获取屏幕图像有很多答案。在你的情况下,我想问题是使用私有API你得到整个屏幕,在后者(但如果你没有显示一些代码很难说)你只渲染视图的一部分。您有2个公共API选项:
renderInContext
drawViewHierarchy
(仅限iOS7,可能还有>)这个片段总结了2个方法,它是一个UIView类,所以你应该在UIView对象(或子类)上发送这个消息。将其发送到窗口即可获得全屏
- (UIImage *) imageByRenderingViewOpaque:(BOOL) yesOrNO {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, yesOrNO, 0);
if ([self respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)]) {
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:NO];
}
else {
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
}
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultingImage;
}
- (UIImage *) imageByRenderingView{
return [self imageByRenderingViewOpaque:NO];
}