【发布时间】:2016-04-08 07:26:50
【问题描述】:
我在 1 个viewController 中有三个webViews。它们都使用内联样式表显示本地html(没有从任何外部资源加载)。我想根据内容大小在运行时缩放webViews 高度。问题是只有第一个 webView 可以正确缩放。仅当我更改 view controller(例如转到应用程序的另一部分)并返回时,剩下的 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 显示它们都加载了全部内容,但只更新了一个高度
【问题讨论】:
-
你确定高度是主要原因吗,可能它们是重叠的。因为我们不知道视图在层次结构中是如何排列的。
-
视图层次排列为rootView -> scroll view -> contentView -> [webView, webView, webView]。 WebViews 是按约束排列的,第一个 webView 连接到 contentView 的顶部,next 的顶部连接到前一个底部。目前 ContentView 的大小是固定的,并且比所有具有完整内容的 webView 都大得多。返回 viewController 后,其他元素有很多空白空间
标签: ios swift webview uiwebview