从URL加载内容后,UIWebView显然滚动

时间:2014-05-31 04:18:13

标签: ios uiwebview uiscrollview nslayoutconstraint contentoffset

我正在使用UIWebView将HTML文档加载到loadRequest:requestURL。 HTML内容并不完全适合视图的框架。令我惊讶的是,在加载页面时(调用webViewDidFinishLoad:时),视图scrollView.contentOffset(0,0)不同。看起来好像内容可能已向下滚动,使其垂直中心与视图的垂直中心对齐(见下面的屏幕截图)。

这怎么可能发生?如何让内容的左上角最初与视图的左上角对齐?在webViewDidFinishLoad中设置scrollView.contentOffset(0,0):`是一个选项,但显然会导致一些闪烁。

这发生在UIViewController的上下文中,其根视图下方包含两个兄弟UIWebView。两个UIWebView垂直堆叠,其中UILabel(以灰色背景显示在屏幕截图中)。 (屏幕截图中不显示较低的UIWebView,因为它目前都是白色的。)视图使用基于约束的布局,当前问题涉及上部UIWebView

更新进一步研究发现,视觉缺陷不是由于在UIWebView上方滚动,而是由于frame.origin.y已设置0调用时间64webViewDidFinishLoad(也就是状态栏和导航栏的组合高度)。我从视图控制器loadRequest:requestWithURL:调用了viewWillAppear:,并且在UIWebView上方有一个布局约束,它在其顶部和顶部之间施加了0的垂直空间顶部布局指南的底部。

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为会发生以下情况:iOS 7希望UIScrollView在向下滚动时在状态和导航栏下方展开。显然,它会执行初始垂直滚动,以防止在滚动发生之前将Web内容的顶部隐藏在这些栏后面。

我有一个布局约束,垂直距离为0到放置在UIWebView上的顶部布局指南,导致错误的垂直距离是状态栏高度的两倍加上顶部的高度导航栏的屏幕。将此布局约束替换为1,与superview的垂直距离为0,纠正错误。