WKWebViewのscrollの高さを動的に読み込む方法
背景
セルにWKWebView引いてコンテンツを読み込ませて、読み込み後のスクロールの高さを取得して、セルの高さにしたかったけど色々つまったので備忘録
解決方法
StackOverFlowに載ってる方法でほぼ問題なし
How to determine the content size of a WKWebView?
だけど、1点だけうまくいかなかったのが、高さを取得する時に
navigationDelegate
のfunc webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
メソッド内で高さの取得を
webView.evaluateJavaScript("document.body.offsetHeight", completionHandler: { (height, error) in })
で取得すると、正しい高さよりも激しく大きな数値が返ってきてしまい、スクロールすると余白だらけになってしまった。
なので、
webView.scrollView.contentSize.height
で取得するようにしたら正しいのが取れた
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { webView.evaluateJavaScript("document.readyState", completionHandler: { (complete, error) in if complete != nil { print(webView.scrollView.contentSize) //正しいの取れる } }) }