iOS 加载完成后 UIWebView 未更新其大小

iOS UIWebView is not updating it's size after loading is finished

我在 1 viewController 中有三个 webViews。它们都以内联样式 sheet 显示本地 html(未从任何外部资源加载任何内容)。我想根据内容大小在运行时缩放 webViews 高度。问题是只有第一个 webView 可以正确缩放。只有当我更改 view controller(f.e。转到应用程序的另一部分)和 return.

时,剩下的 2 个才会刷新它们的大小

这里是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 显示它们都加载了全部内容,但只有一个高度被更新

webViewDidFinishLoad 而不是

webView.setNeedsUpdateConstraints()
webView.layoutIfNeeded()

尝试

webView.scalesPageToFit = true

我找到了解决方案。我必须在前一个完全加载后才加载 Web 视图,所以现在我的代码看起来

func webViewDidFinishLoad(webView: UIWebView) { 
    if webView.stringByEvaluatingJavaScriptFromString("document.readyState") == "complete"{
        var height = webView.scrollView.contentSize.height
        if webView == freeWebview{
            freePriceHeight.constant = height
            self.prepareSecondWebView()
        }
        if webView == basicPriceWebView{
            basicWebViewHeight.constant = height
            self.prepareThirdWebView()
        }
        if webView == premiumTagWebView{
            premiumWebViewHeight.constant = height
        }
   }
}