美文网首页程序员
iOS开发-关于滑动隐藏导航栏与tabbar以及判断向上或向下滑

iOS开发-关于滑动隐藏导航栏与tabbar以及判断向上或向下滑

作者: 037e3257fa3b | 来源:发表于2017-07-11 15:25 被阅读0次

一、关于隐藏导航栏的几个属性、一下为默认值

    self.navigationController.hidesBarsOnSwipe = NO;
    self.navigationController.hidesBarsOnTap = NO;
    self.navigationController.hidesBottomBarWhenPushed = NO;
    self.navigationController.hidesBarsWhenKeyboardAppears = NO;
    self.navigationController.hidesBarsWhenVerticallyCompact = NO;

1、hidesBarsWhenKeyboardAppears

self.navigationController.hidesBarsWhenKeyboardAppears = YES; // 当键盘弹出的时候,导航栏自动隐藏,默认NO,注意:如果只设置这个属性为YES,键盘出现的时候,导航栏就自动隐藏了,但是之后无论怎么操作,导航栏都不会再显示出来,所有需要配合hidesBarsOnSwipe或者hidesBarsOnTap使用,这样的话,导航栏就能自如的隐藏和展示了

2、hidesBarsOnSwipe

self.navigationController.hidesBarsOnSwipe = YES; // 上下滑动的时候,导航栏自动隐藏和显示

3、hidesBarsOnTap属性,

self.navigationController.hidesBarsOnTap = YES; // 点击控制器的时候,导航栏自动隐藏和显示

4、hidesBarsWhenVerticallyCompact属性,

self.navigationController.hidesBarsWhenVerticallyCompact = YES; // 当导航栏的垂直size比较紧凑的时候,导航栏自动隐藏

5、hidesBottomBarWhenPushed属性,

该属性默认NO,设置为YES的话,在导航栏push控制器的时候,自动将tabBar隐藏,隐藏之后不会自动显示出来,还需手动设置

二、向下滑动隐藏 navigationbar、tabbar,向上滑动显示

self.navigationController.hidesBarsOnSwipe = YES;滑动隐藏导航栏可直接使用这个属性。或者使用以下方法

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
  
    //scrollView已经有拖拽手势,直接拿到scrollView的拖拽手势
    UIPanGestureRecognizer *pan = scrollView.panGestureRecognizer;
    //获取到拖拽的速度 >0 向下拖动 <0 向上拖动
    CGFloat velocity = [pan velocityInView:scrollView].y;

    if (velocity <- 5) {
        //向上拖动,隐藏导航栏
        self.tabBarController.tabBar.hidden = YES;
        [self.navigationController setNavigationBarHidden:YES animated:YES];
    }else if (velocity > 5) {
        //向下拖动,显示导航栏
        self.tabBarController.tabBar.hidden = NO;
        [self.navigationController setNavigationBarHidden:NO animated:YES];
    }else if(velocity == 0){
        //停止拖拽
    }
}

相关文章

网友评论

    本文标题:iOS开发-关于滑动隐藏导航栏与tabbar以及判断向上或向下滑

    本文链接:https://www.haomeiwen.com/subject/ksmphxtx.html