- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
目标:网站加载完成后对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 的所有可能的委托(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/
我试图在 WKWebView 控件中加载网页而不将其加载为 subview : WKPreferences *preferences = [[WKPreferences alloc] init]; p
我正在 iOS Xamarin 中实现 WKWebView,我想在加载开始和加载完成时做一些事情。我已经实现了 IWKNavigationDelegate 并添加了以下函数,但没有一个被调用。我错过了
目标:网站加载完成后对WKWebView进行截图 采用的方法: 在 UIViewController 中定义了一个 WKWebView 变量 创建了一个名为 screen capture() 的扩展方
我是一名优秀的程序员,十分优秀!