我在webViews
中有三个viewController
。所有这些都显示带有内联样式表的本地html
(没有任何内容从任何外部资源加载)。我想根据内容大小在运行时缩放webViews
高度。问题是只有第一个webView才能正确扩展。只有当我更改view controller
(f.e。转到应用程序的另一部分)并返回时,剩下的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()
}
}
所有Web视图都连接到同一Web视图委托。 DebugPrints显示所有这些内容都加载了它们的全部内容,但只更新了一个高度
答案 0 :(得分:4)
我找到了解决方案。我必须在上一次完全加载之后加载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
}
}
}
答案 1 :(得分:0)
webViewDidFinishLoad
而不是
webView.setNeedsUpdateConstraints()
webView.layoutIfNeeded()
试
webView.scalesPageToFit = true