iOS开发中隐藏状态栏和导航栏

先看效果图:

1.隐藏导航栏、状态栏.gif

需求:

当用户上拉Tableview的时候导航栏和状态栏同时消失,而当用户下拉Tableview的时候导航栏和状态栏又同时显示。

实现:

在scrollViewDidScroll方法中去监听Tableview的偏移量,然后根据偏移量来对导航栏和状态栏进行隐藏或显示。

注意:

隐藏导航栏的方法我们常用,可隐藏状态栏的方法并不常用。
隐藏状态栏的方法:
[self setNeedsStatusBarAppearanceUpdate];
- (BOOL)prefersStatusBarHidden{
return hiddenStatusBar;
}

核心代码:

  - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGFloat newY= scrollView.contentOffset.y;
NSLog(@"newY:===%f", newY);
if (newY < 0) {
    hiddenStatusBar = NO;
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}else{
    if (newY != lastContentOffset ) {
        if (newY > lastContentOffset) { // scroll下滑...
            hiddenStatusBar = YES;
            [self.navigationController setNavigationBarHidden:YES animated:YES];
            
        }else{  // scroll上滑...
            hiddenStatusBar = NO;
            [self.navigationController setNavigationBarHidden:NO animated:YES];
            
        }
        lastContentOffset = newY;   // 记录上一次的偏移量
    }
}

[self setNeedsStatusBarAppearanceUpdate];   // 刷新状态栏的隐藏状态

}

demo地址:https://gitee.com/liangsenliangsen/hide_the_status_bar.git
本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。

你可能感兴趣的:(iOS开发中隐藏状态栏和导航栏)