2016-07-12 45 views
2

我的應用程序有一個WKWebView,用於顯示包含一些webGL內容的網頁。我使用drawViewHierarchyInRect在網頁加載後將WKWebView渲染爲圖像。這在模擬器上正常工作,但在手機上,webGL內容不會呈現給圖像。網頁的其餘部分呈現OK。在電話上,drawViewHierarchyInRect調用返回false(文檔中顯示「如果快照缺少層次結構中任何視圖的圖像數據,則返回false」)。WKWebView drawViewHierarchyInRect不會在手機上呈現webGL內容

這裏是代碼我使用:

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

回答

0

是的,我也遇到了這個問題。我嘗試了很多方法,但無法解決它。 唯一的方法可能是這樣的:設置WebGLRenderer的'preserveDrawingBuffer'爲true,調用canvas''toDataURL'來創建一個快照,然後將它發送到應用程序,最後保存它。