滚动uiwebview时隐藏并显示导航栏

用户名

我需要帮助,我正在尝试构建一个应用程序,其中有一个viewcontroller带有auiwebview和一个navbar带有2个按钮的应用程序我想做的是,当用户滚动uiwebview导航栏时,它会自动像滑动起来一样隐藏起来。但不能正常工作,我希望它能工作。让我在这里发布代码。viewdidload我把这个。

[webPage.scrollView setDelegate:self];

然后我有这种方法

- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
    if(scrollView.contentOffset.y == 0) {
        //show
        NSLog(@"Show");
        [self.navigationController setNavigationBarHidden:NO animated:YES];
    } else {
        NSLog(@"Hide");
        [self.navigationController setNavigationBarHidden:YES animated:YES];
        //hide
    }
}

NSLog正确,但是没有别的navbar仍然停留。:(

iOS开发

您可以尝试以下方法:

1.声明导航栏,一个带有导航栏高度和2个BOOL变量的常量:

UINavigationBar *navBar;

static const CGFloat kNavBarHeight = 60.0f;

BOOL webViewScrollIsDragging;
BOOL webViewScrollIsDecelerating;

2.在viewDidLoad中编写以下内容:

 [webView.scrollView setContentInset:UIEdgeInsetsMake(kNavBarHeight, 0, 0, 0)];
 [webView.scrollView setScrollIndicatorInsets:UIEdgeInsetsMake(kNavBarHeight, 0, 0, 0)];
 [webView.scrollView setContentOffset:CGPointMake(0, -kNavBarHeight) animated:NO];
 webView.scrollView.delegate = self;

然后初始化并将其UINavigationBar作为子视图添加self.view原点(还请确保您UIWebView具有相同的原点,即(0,0))。

3.实现UIScrollViewDelegate方法(别忘了添加UIScrollViewDelegate协议):

#pragma mark - UIScrollViewDelegate Methods
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView == webview.scrollView)
    {
        if (scrollView.contentOffset.y == 1 && !webViewScrollIsDragging && !webViewScrollIsDecelerating)
        {
            [UIView animateWithDuration:0.3
                                  delay:0.0
                                options: UIViewAnimationCurveEaseOut
                             animations:^(void) {
                                 CGRect navBarFrame = CGRectMake(0,-scrollView.contentOffset.y-kNavBarHeight, self.view.bounds.size.width, kNavBarHeight);
                                 navBar.frame = navBarFrame;
                             }
                             completion:nil];
        }
        else
        {
            CGRect navBarFrame = CGRectMake(0,-scrollView.contentOffset.y-kNavBarHeight, self.view.bounds.size.width, kNavBarHeight);
            navBar.frame = navBarFrame;
        }

        if (scrollView.contentOffset.y < -kNavBarHeight)
        {
            [webview.scrollView setScrollIndicatorInsets:UIEdgeInsetsMake(fabsf(scrollView.contentOffset.y), 0, 0, 0)];
        }
    }
}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    if (scrollView == webview.scrollView)
    {
        webViewScrollIsDragging = YES;
    }
}

- (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    if (scrollView == webview.scrollView)
    {
        webViewScrollIsDragging = NO;
    }
}

- (void) scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
    if (scrollView == webview.scrollView)
    {
        webViewScrollIsDecelerating = YES;
    }
}

- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    if (scrollView == webview.scrollView)
    {
        webViewScrollIsDecelerating = NO;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

滚动uiwebview时隐藏并显示导航栏

来自分类Dev

在向下滚动时隐藏导航栏并在向上滚动时显示它

来自分类Dev

向下滚动时如何隐藏导航栏?

来自分类Dev

向上滚动时导航栏不显示

来自分类Dev

向下滚动时,隐藏UiWebView底部的工具栏

来自分类Dev

使用Headroom JS隐藏滚动条上的导航栏并在需要时显示

来自分类Dev

使用Headroom JS隐藏滚动条上的导航栏,并在需要时显示

来自分类Dev

在向下滚动时隐藏导航栏,并在用户使用jquery向上滚动页面时显示它,无法正常工作

来自分类Dev

隐藏导航栏时显示状态栏

来自分类Dev

当向上滚动时,hidesBarsOnSwipe从不会再显示导航栏

来自分类Dev

隐藏导航栏时,按视图时会显示红色的窄条

来自分类Dev

滚动查看页面内容时显示和隐藏操作栏

来自分类Dev

在滚动位置显示/隐藏导航

来自分类Dev

隐藏和显示导航栏

来自分类Dev

隐藏引导程序导航栏品牌,并且仅在导航栏折叠时居中显示

来自分类Dev

单击时隐藏导航栏

来自分类Dev

(Xcode / Swift)向下滚动UIWebView时如何隐藏工具栏?

来自分类Dev

打开搜索栏时导航栏隐藏

来自分类Dev

iOS:合并范围栏在导航栏中显示搜索栏时隐藏

来自分类Dev

隐藏导航栏时,将Interactivepopgesturerecognizer与CollectionView一起使用,并进行水平滚动

来自分类Dev

尝试在使用z-index滚动时在封面图像后面隐藏固定的导航栏

来自分类Dev

添加导航栏后,滚动时隐藏我的模式上的关闭按钮

来自分类Dev

隐藏导航栏后在Android KitKat上显示导航栏

来自分类Dev

hidesBarsOnTap-导航栏隐藏/显示的事件?

来自分类Dev

使用 Javascript 隐藏和显示导航栏

来自分类Dev

快速显示和隐藏导航栏

来自分类Dev

滚动时隐藏导航栏,但这样做是为了让它不是动画而是自然地“滚动”

来自分类Dev

使导航栏在滚动开始时缩小

来自分类Dev

滚动时透明的导航栏可见

Related 相关文章

  1. 1

    滚动uiwebview时隐藏并显示导航栏

  2. 2

    在向下滚动时隐藏导航栏并在向上滚动时显示它

  3. 3

    向下滚动时如何隐藏导航栏?

  4. 4

    向上滚动时导航栏不显示

  5. 5

    向下滚动时,隐藏UiWebView底部的工具栏

  6. 6

    使用Headroom JS隐藏滚动条上的导航栏并在需要时显示

  7. 7

    使用Headroom JS隐藏滚动条上的导航栏,并在需要时显示

  8. 8

    在向下滚动时隐藏导航栏,并在用户使用jquery向上滚动页面时显示它,无法正常工作

  9. 9

    隐藏导航栏时显示状态栏

  10. 10

    当向上滚动时,hidesBarsOnSwipe从不会再显示导航栏

  11. 11

    隐藏导航栏时,按视图时会显示红色的窄条

  12. 12

    滚动查看页面内容时显示和隐藏操作栏

  13. 13

    在滚动位置显示/隐藏导航

  14. 14

    隐藏和显示导航栏

  15. 15

    隐藏引导程序导航栏品牌,并且仅在导航栏折叠时居中显示

  16. 16

    单击时隐藏导航栏

  17. 17

    (Xcode / Swift)向下滚动UIWebView时如何隐藏工具栏?

  18. 18

    打开搜索栏时导航栏隐藏

  19. 19

    iOS:合并范围栏在导航栏中显示搜索栏时隐藏

  20. 20

    隐藏导航栏时,将Interactivepopgesturerecognizer与CollectionView一起使用,并进行水平滚动

  21. 21

    尝试在使用z-index滚动时在封面图像后面隐藏固定的导航栏

  22. 22

    添加导航栏后,滚动时隐藏我的模式上的关闭按钮

  23. 23

    隐藏导航栏后在Android KitKat上显示导航栏

  24. 24

    hidesBarsOnTap-导航栏隐藏/显示的事件?

  25. 25

    使用 Javascript 隐藏和显示导航栏

  26. 26

    快速显示和隐藏导航栏

  27. 27

    滚动时隐藏导航栏,但这样做是为了让它不是动画而是自然地“滚动”

  28. 28

    使导航栏在滚动开始时缩小

  29. 29

    滚动时透明的导航栏可见

热门标签

归档