一、關于隱藏導航欄的幾個屬性、一下為默認值
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){
//停止拖拽
}
}