gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 05:10:01 27 4
gpt4 key购买 nike

目标:网站加载完成后对WKWebView进行截图

采用的方法:

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

  • 让我的 UIViewController 实现 WKNavigationDelegate

  • 设置 wkwebview.navigationDelegate = self(在 UIViewController 初始化中)

  • 在 UIViewcontroller 中实现了 didFinishNavigation 委托(delegate)函数来调用 WKWebView 的屏幕捕获扩展方法

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
let img = webView.screenCapture()
}

问题:

  • 当我调试模拟器时,我注意到即使网站尚未在 WKWebView 中呈现,控件也会到达 didFinishNavigation() 函数
  • 相应的图片截图是一个白色的 Blob 。

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


更新:添加我用来截取网页 View 屏幕截图的代码

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
}

最佳答案

对于那些仍在寻找答案的人来说,标记的答案是废话,他只是强行让答案被接受。

使用属性,

"loading"

webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!)

两者做同样的事情,表明是否加载了主要资源。

现在,这并不意味着整个网页/网站都已加载,因为它实际上取决于网站的实现。如果它需要加载脚本资源(图像、字体等)以使其可见,导航完成后您仍然什么也看不到,因为网络调用网站不被 webview 跟踪,只有导航被跟踪,所以它不会真正知道网站何时完全加载。

关于ios - 当调用 didFinishNavigation 时,WKWebView 没有完成加载 - WKWebView 中的 Bug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30291534/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com