在 UIScrollView 内滚动时,调整大小的 UIWebView 返回到原始大小
Posted
技术标签:
【中文标题】在 UIScrollView 内滚动时,调整大小的 UIWebView 返回到原始大小【英文标题】:Resized UIWebView returns to original size when scrolling inside a UIScrollView 【发布时间】:2014-02-06 18:16:08 【问题描述】:我有一个 UIScrollView,上面有某些细节、标签等,还有一个 UIWebView,底部有 html 内容。 (我知道我不应该将 UIWebView 放在 UIScrollView 中,但我需要所有内容都是可滚动的,而不仅仅是 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】:您很可能正在使用autolayout
禁用自动布局属性。
发生的原因:自动布局将使用当前约束将视图更新到其原始位置。
【讨论】:
哇,你完全正确!我不知道 Autolayout 会像这样更新视图位置。非常感谢您的信息和帮助! :) 对您有帮助吗?接受和支持答案会很酷。 完美运行!我是新用户,我还没有足够的声望来投票,对不起。我会尽快做的! 谁能告诉我如何禁用自动布局 禁用autolayout
设置yourOutlet.translatesAutoresizingMaskIntoConstraints = false
以上是关于在 UIScrollView 内滚动时,调整大小的 UIWebView 返回到原始大小的主要内容,如果未能解决你的问题,请参考以下文章
调整滚动视图框架的大小时,UIScrollView 子视图的大小调整不正确
UICollectionView 在 UIScrollView 内调整大小
快速滚动 UIScrollView 时 UIImageView 停止调整大小