先看效果图:
需求:
当用户上拉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
本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。