在iOS中,一个模块一般是共用一套导航栏,
而在侧滑返回时,导航栏是固定不动的,只有控制器的页面会跟随手势移动而移动, 因此开发中会出现一些坑
场景1:
首页控制器(假设为Home控制器)导航栏隐藏,进入下一个控制器(假设为B )时显示
此时,从B
侧滑返回Home
时会有问题
如果Home
的隐藏写在viewWillAppear
和viewWillDisappear
里面, 那从B
返回Home
时,会先触发Home
的viewWillAppear
方法,侧滑还在B
页面时,导航栏就会隐藏
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.navigationController.navigationBarHidden = YES;
NSLog(@"%s",__func__);
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.navigationController.navigationBarHidden = NO;
NSLog(@"%s",__func__);
}
从图中可以看到,侧滑时导航栏会提前隐藏
translucent=NO
![](https://img.haomeiwen.com/i9181332/8ffcc1b0d812924d.gif)
translucent=YES
![](https://img.haomeiwen.com/i9181332/493a85afc169cdd6.gif)
解决方式: https://github.com/iOSRG/RGNavigationController
喜欢的给个star吧
网友评论