在UIScrollView内滚动时,调整大小的UIWebView将恢复为原始大小

时间:2014-02-06 18:16:09

标签: ios uiwebview uiscrollview scroll

我有一个UIScrollView,顶部有一些细节,标签等,底部有一个HTML内容的UIWebView。 (我知道我不应该在UIS​​crollView中放置UIWebView,但我需要所有内容都可以滚动,而不仅仅是webview)。

我的步骤是:

1)我设置UIWebView scrollEnabled=NO,并计算UIWebView内容大小并更新其框架:(在webViewDidFinishLoad:(UIWebView *)webView

CGRect WebViewFrame = webView.frame;
WebViewFrame.size.height = 1;
webView.frame = WebViewFrame;
CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
WebViewFrame.size = fittingSize;
webView.frame = WebViewFrame;

2)我计算了所有UIScrollView的内容并更新了contentSize

CGFloat contentHeight = 0;
contentHeight += mainInfoView.frame.size.height;
contentHeight += .......
contentHeight += webView.frame.size.height;
[scrollView setContentSize:CGSizeMake(scrollView.frame.size.width, contentHeight)];

起初看起来效果很好,UIWebView的大小调整到正确,UIScrollView的contentSize似乎按预期扩展。

问题是当我滚动或移动滚动视图时,UIWebView立即返回其原始大小,我认为UIScrollView contentSize也会发生变化。 我不明白为什么。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:6)

您很可能正在使用autolayout

禁用自动布局属性。

发生这种情况的原因:Autolayout将使用当前约束将视图更新为其原始位置。