iOS 導航欄隱藏方式 筆記
阿新 • • 發佈:2018-11-08
場景:某個控制器不需要導航
- 直接使用:
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:animated]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [self.navigationController setNavigationBarHidden:NO animated:animated]; }
-
缺點:
如果這個不需要導航的控制器,
是TabBarController的一個子控制器,
在切換tabBar的時候會有一個導航欄上滑消失的動畫 -
方案:
在需要導航的控制器內
- (void)viewDidLoad { [super viewDidLoad]; self.navigationController.delegate = self; } #pragma mark - UINavigationControllerDelegate - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { BOOL isMe = [viewController isKindOfClass:[self class]]; [self.navigationController setNavigationBarHidden:isMe animated:YES]; } - (void)dealloc { self.navigationController.delegate = nil; }
參考:
iOS導航欄的正確隱藏方式:https://www.jianshu.com/p/1f72cd2771fe