我一直在寻找很长时间,我发现了一些提示,但我无法弄清楚如何将其应用于我的问题。将不胜感激任何帮助。
试图实现的目标非常简单:
我的应用程序包括一个播放 youtube 视频的 WKWebview(带有一些叠加文本)。我添加了一个链接来截取屏幕截图并将其保存到相机胶卷中。
结果:
它在模拟器中完美运行,但在设备上我只能看到覆盖文本和背景(应该是视频)是黑色的。
这是我当前的代码(SWIFT 3):
...
// Save screenshot
UIImageWriteToSavedPhotosAlbum(captureScreen(), nil, nil, nil)
...
func captureScreen() -> UIImage {
UIGraphicsBeginImageContextWithOptions(webView!.bounds.size, webView!.isOpaque, 0)
webView!.drawHierarchy(in: webView!.bounds, afterScreenUpdates: false)
let image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image
}
Run Code Online (Sandbox Code Playgroud)
我也试过(结果相同)
...
UIImageWriteToSavedPhotosAlbum(captureScreen(), nil, nil, nil)
...
func captureScreen() -> UIImage {
let image = UIApplication.shared.screenShot!
return image
}
Run Code Online (Sandbox Code Playgroud)
我在网上读到我们不能使用 renderInContext: 因为没有捕获包含视频播放器的 GL 层。所以他们建议实际合并 UIImageView 和 EAGLview ( link1 , link2 ) 的内容。
这听起来不错,但我发现的大多数解决方案都是用 Objective-c 编写的或相对复杂的(link3、link4、link5 …