截取UIView的截图,其子视图是相机会话

pme*_*ino 5 camera screenshot layer avfoundation calayer

我正在构建一个应用程序,我需要截取视图的截图,其子视图是相机会话(AVFoundation会话).我试过这段代码:

CGRect rect = [self.containerView bounds];
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.containerView.layer renderInContext:context];
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)

这有效地让我获得了视图的UIImage,只有相机会话是黑色的:

在此输入图像描述

我尝试过私有方法UIGetScreenImage()并且工作得很好,但是由于Apple不允许这样做,我无法使用它.我也在Apple的文档中尝试了一个,但它是一样的.我已经使用图层跟踪了AVFoundation会话的问题.我怎样才能做到这一点?该应用程序有一个容器视图,其中包含两个停止相机会话的视图.

kan*_*nso 2

如果使用 iOS 7,则相当简单,您可以从 UIViewController 执行类似的操作:

UIView *snapshotView = [self.view snapshotViewAfterScreenUpdates:YES];
Run Code Online (Sandbox Code Playgroud)

您还可以使用寡妇提供的此链接:iOS:以编程方式制作屏幕截图的最快、最高效的方法是什么?

对于 iOS 6 及更早版本,我只能找到以下 Apple 技术问答:[How do I take a Screenshot of my app that contains UIKit and Camera elements?]

  1. 捕捉相机视图的内容。
  2. 将捕获的相机内容绘制到您正在渲染 UIKit 元素的图形上下文中。(与您在代码中所做的类似)