WKWebView drawViewHierarchyInRect不会在手机

时间:2016-07-12 23:21:59

标签: ios webgl wkwebview

我的应用程序有一个WKWebView,显示包含一些webGL内容的网页。我使用drawViewHierarchyInRect在网页加载后将WKWebView渲染为图像。这在模拟器上工作正常,但在手机上webGL内容不会呈现给图像。网页的其余部分呈现正常。在电话上,drawViewHierarchyInRect调用返回false(文档说“如果快照缺少层次结构中任何视图的图像数据,则返回false”)。

以下是我正在使用的代码:

UIGraphicsBeginImageContextWithOptions(webView.bounds.size, true, 0.0)

let drewOK = webView.drawViewHierarchyInRect(webView.bounds, afterScreenUpdates: true)

if (!drewOK)
{
    print("drawViewHierarchyInRect failed") // when the web page contains webGL this is printed on a phone but not in simulator
}

let overlayImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

photoPreview.image = overlayImage

iOS 9和iOS 10都会出现此问题。

我还需要做些什么来让它在手机上运行吗?

可以使用演示项目on GitHub

1 个答案:

答案 0 :(得分:0)

是的,我也遇到了这个问题。我尝试了很多方法,但无法解决它。 唯一的方法可能是这样:设置WebGLRenderer' preserveDrawingBuffer'是真的,叫画布' ' toDataURL'制作快照,然后将其发送到应用程序,最后保存。