webViews
に1つのviewController
があります。それらのすべてがローカルのhtml
をインラインスタイルシートで表示しています(外部リソースからは何もロードされていません)。コンテンツサイズに基づいて実行時にwebViews
の高さをスケールする必要があります。問題は、最初のWebViewだけが正しくスケーリングされていることです。残りの2つは、私がview controller
(f.e.アプリケーションの別の部分に行く)を変更して戻ったときにのみ、サイズをリフレッシュしています。ここで iOS UIWebViewの読み込みが完了した後にサイズが更新されない
viewDidFinishedLoad
func webViewDidFinishLoad(webView: UIWebView) {
if webView.stringByEvaluatingJavaScriptFromString("document.readyState") == "complete" {
var height = webView.scrollView.contentSize.height
debugPrint(height)
if webView == freeWebview{
freePriceHeight.constant = height
}
if webView == basicPriceWebView{
bacicWebViewHeight.constant = height
}
if webView == premiumTagWebView{
premiumWebViewHeight.constant = height
}
debugPrint(webView.stringByEvaluatingJavaScriptFromString("document.body.innerHTML;"))
webView.setNeedsUpdateConstraints()
webView.layoutIfNeeded()
}
}
ウェブビューのすべてのコードです。 DebugPrintsそれらのすべてが彼らの完全なコンテンツをロードすることを示しているが、代わりに
webView.setNeedsUpdateConstraints()
webView.layoutIfNeeded()
のwebViewDidFinishLoad
が、私は解決策を見つけた
webView.scalesPageToFit = true
高さが主な原因で、おそらく重複していますか?私たちは、ビューがどのように階層構造に配置されているか分かりません。 – Arvind
ビュー階層は、rootView - >スクロールビュー - > contentView - > [webView、webView、webView]の順に配置されています。 WebViewsは制約によって配置され、最初にwebViewがcontentViewの上部に接続され、次のWebViewの上部が前の下部に接続されます。現在ContentViewのサイズは固定されており、完全なコンテンツを持つすべてのWebViewよりもはるかに高いです。 viewControllerに戻ると、別の要素の空き領域がたくさんあります – vortex