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