【发布时间】:2015-10-23 00:39:57
【问题描述】:
我在使用此设置时遇到了很多问题。所以基本上我会显示一些高度可变的标签,然后是一个按钮,在视图的最后我需要一个 WebView 来显示一些 HTML 格式的文本。
我在加载内容时调整 web 视图高度约束,如下所示。
func webViewDidFinishLoad(webView: UIWebView) {
nContentViewHeight.constant = webView.scrollView.contentSize.height
}
当第一次加载视图时,它可以完美运行。滚动效果很好,所有网页视图内容都可见。
但是当我旋转设备时,我不知道如何正确调整网络视图的大小。我尝试在
中再次加载内容override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation)
这样webViewDidFinishLoad 会再次触发并调整网络视图的大小。但这根本不起作用,因为 web 视图中滚动视图的 contentSize 没有改变。
不知道为什么我尝试了非常丑陋的解决方案,就是这样:
func fitWebAndScrollView(){
let newRect = CGRectMake(nContentWebView.frame.minX, nContentWebView.frame.minY, self.view.frame.width, 10)
let newWebView = UIWebView(frame: newRect)
newWebView.delegate = self
newWebView.tag = -12
newWebView.scrollView.scrollEnabled = false
self.view.addSubview(newWebView)
newWebView.loadHTMLString(contentHtml, baseURL: nil)
}
override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) {
fitWebAndScrollView()
}
func webViewDidFinishLoad(webView: UIWebView) {
nContentViewHeight.constant = webView.scrollView.contentSize.height
if webView.tag == -12 {
webView.removeFromSuperview()
nContentViewHeight.constant *= 1.1 // longer the content is more of it is clipped
}
}
这种方法可行,但在某些情况下,WebView 内容的底部会被剪裁,就好像内部滚动视图内容的大小计算不正确一样。
以前有人处理过这个吗?我一直认为这种事情不是一个额外的特殊用例。
感谢您的想法。
【问题讨论】:
标签: ios swift uiscrollview uiwebview autolayout