2016-07-12 3 views
2

В моем приложении WKWebView отображается веб-страница, содержащая контент webGL. Я использую drawViewHierarchyInRect для визуализации WKWebView для изображения после загрузки веб-страницы. Это отлично работает на симуляторе, но на телефоне содержимое webGL не отображается на изображении. Остальная часть веб-страницы отображается ОК. По телефону вызов 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

Да, я также встречаю эту проблему. Я попробовал много методов, но не могу его решить. только способ может выглядеть следующим образом: установить «KeepDrawingBuffer» WebGLRenderer - true, вызвать canvas 'toDataURL' для создания моментального снимка, а затем отправить его в приложение, сохранить его в конце.

Смежные вопросы