iOS7 Webview初始滚动位置在导航栏下

17 ios7

我有一个webview,可以根据需要滚动导航栏.

但是,当我第一次加载控制器时,滚动webview中加载的页面,使其与导航栏的顶部对齐.当我滚动Web视图时,顶部存在正确的插入以正确放置,它只是初始位置不正确.

如何将初始位置完全滚动到顶部,包括插图?

Aur*_*rte 13

如果您不介意拥有不透明的导航栏,那么最简单的解决方案可能是在包含您的Web视图的视图控制器中执行此操作:

self.navigationController.navigationBar.translucent = NO;
Run Code Online (Sandbox Code Playgroud)

然后,框架的定位将采用与iOS6相同的行为,神奇地!

  • 绝对有效.但是,我真正想看到的是UITableViewController在包含UIWebView的UIViewController中的行为. (4认同)

Pur*_*ran 6

Rick的答案是正确的,除了最高值应该是负数,这对我有用!

[self.webView.scrollView setContentInset:UIEdgeInsetsMake(-44, 0, 0, 0)];
[self.webView.scrollView setScrollIndicatorInsets:UIEdgeInsetsMake(-44, 0, 0, 0)];
[self.webView.scrollView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO];
Run Code Online (Sandbox Code Playgroud)

我使用-44,如果顶部没有状态栏,则应使用-64.


Ric*_*rts 5

我解决这个问题的方法是使用 webViewDidFinishLoad 委托回调。在 web 视图的回调方法中,我设置了所有工作以使 web 视图的滚动视图看起来正确。

[webView.scrollView setContentInset:UIEdgeInsetsMake(64, 0, 0, 0)];
[webView.scrollView setScrollIndicatorInsets:UIEdgeInsetsMake(64, 0, 0, 0)];
[webView.scrollView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO];
Run Code Online (Sandbox Code Playgroud)


小智 1

使用下面的

CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
CGFloat navHeight = self.navigationController.navigationBar.frame.size.height;
applicationFrame.origin.y = navHeight + 4;
webView = [[UIWebView alloc] initWithFrame:applicationFrame];
Run Code Online (Sandbox Code Playgroud)