iOS 系统的手势滑动返回跟导航栏的隐藏与否是有关系的,同时滑动过程中的动画也和导航栏是否隐藏有联系
- 自定义UINavigationController 继承自系统的 UINavigationController,之后项目中所有需要使用导航控制器的地方都是用自己自定义的导航控制器去初始化
- 自定义的导航控制器的 viewDidLoad 中添加
self.interactivePopGestureRecognizer.delegate = self;
可以保证隐藏了导航栏的控制器也能手势返回 - 重要的一点,没有特殊需要的话,任何显示和隐藏导航栏的操作,都需要在
- (void)viewWillAppear:(BOOL)animated
中使用[self.navigationController setNavigationBarHidden:YES/NO animated:animated];
来执行,同时 animated 必须使用 viewWillAppear 中的参数,不得写死 YES 或者 NO。 - 通过分类处理后的最佳实践:https://github.com/victhjy/Navigationbar