Цель: сделать снимок экрана WKWebView после завершения загрузки сайта
Используемый метод:
- Определено WKWebView var в UIViewController
-
Создан метод расширения, называемый захватом экрана(), который принимает изображение WKWebView
-
Сделал мой UIViewController для реализации WKNavigationDelegate
-
Установите wkwebview.navigationDelegate = self (в инициализации UIViewController)
-
Реализована функция делегирования didFinishNavigation в UIViewcontroller для вызова метода расширения захвата экрана для WKWebView
func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) { let img = webView.screenCapture() }
Вопросы:
- Когда я отлаживаю i-симулятор, я замечаю, что элемент управления достигает функции didFinishNavigation(), хотя веб-сайт еще не отображен в WKWebView
- Соответственно сделанный снимок экрана - это белый кадр.
Что мне здесь не хватает? Я просмотрел все возможные функции делегирования для WKWebView, и ничто иное не представляет собой завершение загрузки контента в WKWebView. Поблагодарите помощь, если есть работа вокруг
Обновление: добавление кода скриншота, который я использую, чтобы сделать снимок экрана для веб-представления
class func captureEntireUIWebViewImage(webView: WKWebView) -> UIImage? {
var webViewFrame = webView.scrollView.frame
if (webView.scrollView.contentSize != CGSize(width: 0,height: 0)){
webView.scrollView.frame = CGRectMake(webViewFrame.origin.x, webViewFrame.origin.y, webView.scrollView.contentSize.width, webView.scrollView.contentSize.height)
UIGraphicsBeginImageContextWithOptions(webView.scrollView.contentSize, webView.scrollView.opaque, 0)
webView.scrollView.layer.renderInContext(UIGraphicsGetCurrentContext())
var image:UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
webView.scrollView.frame = webViewFrame
return image
}
return nil
}