问题
如图,导航栏在侧滑时消失了,特别是如果App中导航栏时不时就需要隐藏的时候,这种情况就会很烦,如果没有注意到原因的话,解决这个问题都需要一些时间
解决方法
使导航栏消失和显示时,使用方法:
[self.navigationController setNavigationBarHidden:YES animated:YES]
⚠️注意设置animated参数,比如上图中就是因为设置为NO,导致当前视图控制器消失时,直接就隐藏了导航栏
暂时没有很好的解决方法,目前我是利用视图控制器的生命周期,在viewController即将显示和消失时处理,比如在viewWillAppear和viewWillDisAppear做一些相应的显示和隐藏导航栏的工作
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
效果:
缺点
利用了视图控制器的生命周期来处理,导致比较依赖viewController,每写一个新的viewController,就要重写viewWillAppear和viewWillDisappear方法,而且如果导航栏做了特殊的处理,可能各个viewController的重写方法还会有差异,不同通过简单共同继承一个UIViewController来解决,我就遇到了这种最坏的情况,以后估计得优化一下