相关疑难解决方法(0)

当调用didFinishNavigation时,WKWebView没有完成加载--WKWebView中的Bug?

目标:在网站加载完成后截取WKWebView的截图

采用的方法:

  • 在UIViewController中定义了WKWebView var
  • 创建了一个名为screen capture()的扩展方法,它获取了WKWebView的图像

  • 使我的UIViewController实现WKNavigationDelegate

  • 设置wkwebview.navigationDelegate = self(在UIViewController init中)

  • 在UIViewcontroller中实现didFinishNavigation委托func,为WKWebView调用屏幕捕获扩展方法

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
    let img = webView.screenCapture()
}
Run Code Online (Sandbox Code Playgroud)

问题:

  • 当我调试i模拟器时,我注意到控件到达didFinishNavigation()函数,即使网站尚未在WKWebView中呈现
  • 相应地,拍摄的图像截图是白色斑点.

我在这里错过了什么?我查看了WKWebView的所有可能的委托函数,没有其他任何东西似乎代表WKWebView中内容加载的完成.如果有解决方法,将不胜感激


更新:添加我用于截取Web视图截屏的截图代码

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
 }
Run Code Online (Sandbox Code Playgroud)

objective-c webview ios swift

24
推荐指数
4
解决办法
3万
查看次数

标签 统计

ios ×1

objective-c ×1

swift ×1

webview ×1