0

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

这怎么会发生,我怎样才能实现使内容的左上角最初与视图的左上角对齐的期望行为?在 webViewDidFinishLoad:` 中设置scrollView.contentOffset(0,0)一个选项,但显然会导致一些闪烁。

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

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

在此处输入图像描述

4

1 回答 1

0

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

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

于 2014-06-02T06:07:34.893 回答