从相机视图中截取屏幕截图

更新

我正在使用sinch库在我的应用程序中进行video通话。 我在video通话期间按钮为整个屏幕截取屏幕截图:

@IBAction func photoAction(_ sender: Any) { let result = UIImage(view: self.videoView) UIImageWriteToSavedPhotosAlbum(result, nil, nil, nil) let result2 = UIImage(view: self.videoController!.localView()) UIImageWriteToSavedPhotosAlbum(result2, nil, nil, nil) } 

call是SINClient
videoController是SINVideoController
localView是UIView,摄像头视图

屏幕截图function正常但摄像头视图没有出现在屏幕截图中。

例如,这self.view编程方式截取self.view的截图: 在此处输入图像描述

这个截图应该如何: 在此处输入图像描述

这个问题是公共的,我看到很多用户有相同的问题,他们无法截取相机视图的截图,但没有给出有用的答案。

好吧,如果我想触发一个简单的截图,我通常会使用这段代码:

 static func screenshotOf(window: UIWindow) -> UIImage? { UIGraphicsBeginImageContextWithOptions(window.bounds.size, true, UIScreen.main.scale) guard let currentContext = UIGraphicsGetCurrentContext() else { return nil } window.layer.render(in: currentContext) guard let image = UIGraphicsGetImageFromCurrentImageContext() else { UIGraphicsEndImageContext() return nil } UIGraphicsEndImageContext() return image } 

我想这也适合你的问题

为了解决这个问题,我要将video通话摄像头从后置摄像头切换到前置摄像头,以便用户可以使用后置摄像头拍照,一旦完成拍照,我就将video通话切换回后置摄像头。