【问题标题】:iOS7 UIWebView has wrong scrollview inset on inital loadiOS7 UIWebView 在初始加载时滚动视图插入错误
【发布时间】:2014-07-30 15:37:41
【问题描述】:

每当我在 webView 中显示 PDF 文件时,看起来它的初始滚动视图插图设置不正确,但一旦我开始滚动或缩放,它就会跳转到正确的位置:/

PDF 已加载,但部分位于导航栏下方

只要我开始滚动或放大,它就会吸附到预期的默认位置

如果我将 PNG 加载到同一个 webview 中,它们具有完美的插图,并显示在导航栏的正下方(中间不是一行黑色像素)。

有谁知道我该如何解决这个问题?

一些 webView 设置:

webView.clipsToBounds = NO;
webView.scalesPageToFit = YES;

【问题讨论】:

  • 您找到解决方案了吗?
  • 选择了非半透明的导航栏:/
  • 遇到同样的问题,请帮忙解决这个问题。

标签: ios7 uiwebview uiscrollview


【解决方案1】:

我实现了这个解决方法:

- (void)webViewDidFinishLoad:(UIWebView *)aWebView {

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.15 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        self.webView.scrollView.contentOffset = CGPointMake(0, -(self.webView.scrollView.contentInset.top));
    });

}

加载 WebView 时它会“跳跃”一点,但至少 contentOffset 设置正确。您可能还需要微调延迟(本例中为 0.15 毫秒)。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题;很烦人。我可以通过首先将我的 WebViewController 设置为 UIScrollViewDelegate 来解决它。

    @interface WebViewController () <UIWebViewDelegate, UIScrollViewDelegate>
    

    当我在 scrollViewDidScroll 委托中添加一些调试以检查某些属性并查看发生了什么时,我能够观察到框架将我的内容偏移量重新调整为 CGPointZero(这导致它位于导航栏后面)。通过检查该条件,您基本上可以通过立即重置来取消效果。

    所以一旦 UIWebView 完成加载,我会根据导航栏和状态栏的高度计算我需要的实际插图。

    - (void)webViewDidFinishLoad:(UIWebView *)webView {
        webView.scrollView.delegate = self;
        float inset = self.navigationController.navigationBar.bounds.size.height +
            [UIApplication sharedApplication].statusBarFrame.size.height;
        webView.scrollView.contentInset = UIEdgeInsetsMake(inset, 0.0, 0.0, 0.0);
    }
    

    然后,每当我检测到滚动时,我就会阻止偏移量取消我的 contentInset。我在用户缩放时排除了这种影响,因此如果用户碰巧落在此边界上,文档就不会跳来跳去。

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
        if(scrollView.contentOffset.y == 0 && !scrollView.zooming)
            [scrollView setContentOffset:CGPointMake(0.0, -(scrollView.contentInset.top))];
    }
    

    这里的优点是您不需要依赖任何计时元素,并且在调度执行时您不会看到 PDF 跳转。您需要的实际 contentInset 也是动态确定的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多