在iOS中使用UIView和背景进行屏幕截图



在我的iPhone应用程序中,我正在捕获设备的屏幕截图。在屏幕截图视图中,我有不同的图层层次结构视图,如底部是空白背景视图,然后在背景上是图像视图,在图像视图上是EAGLView。我想使用EAGLView的帧大小捕获设备的屏幕截图,它应该包括图像视图和背景视图。这是我的代码:

- (IBAction)captureScreen:(id)sender{
    UIGraphicsBeginImageContext(self.view.bounds.size);
    [self.cameraAppView.layer renderInContext:UIGraphicsGetCurrentContext()]; // cameraAppView is the EAGLView
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    CGImageRef imageRef = CGImageCreateWithImageInRect([viewImage CGImage], cameraAppView.frame);
    UIImage *img = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
}

但是现在我只得到了EAGLView的屏幕截图,我想通过EAGLView帧大小获取设备的屏幕截图。我该怎么做?

编辑

对不起,我的问题中错过了一点。同一屏幕中还有一些其他子视图。但他们都是EAGLView的顶级。我想捕获视图的图像,在EAGLView下方,包括EAGLView内容。

终于自己找到了答案。这是一个棘手的问题,我不确定是否有其他正确的方法可以做到这一点。对于我的需要,它工作得很好。我所做的是,只是隐藏不应包含在屏幕截图图像中的子视图,并在捕获图像后取消隐藏子视图。

如果有人找到合适的方法来做到这一点,请分享。

指定要捕获的视图,而不是

[self.cameraAppView.layer renderInContext:UIGraphicsGetCurrentContext()];

[self.cameraAppView.superView.superView.layer renderInContext:UIGraphicsGetCurrentContext()];

如果您的EAGLView是图像的子视图视图,这是您要捕获的视图的子视图,这将起作用

相关内容

  • 没有找到相关文章

最新更新