在Xcode9上单独使用下面的代码隐藏导航条是没有效果的因此要结合两者使用
self.navigationController.navigationBar.hidden = YES;
[self.navigationController setNavigationBarHidden:YES animated:YES];
也许很多人都会这么使用吧?
-
(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];self.navigationController.navigationBar.hidden = YES;
[self.navigationController setNavigationBarHidden:YES animated:YES];
} -
(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];self.navigationController.navigationBar.hidden = NO; [self.navigationController setNavigationBarHidden:NO animated:YES];
}
但是测试的时候我们会发现这不是理想中的效果
下面说一种非常好的效果
在要隐藏的界面加上UINavigationControllerDelegate
在viewDidLoad加上self.navigationController.delegate = self;
最后实现代理- (void)navigationController:(UINavigationController )navigationController willShowViewController:(UIViewController )viewController animated:(BOOL)animated
完整代码:
@interface SaoYiSaoController ()
@end
@implementation SaoYiSaoController
-
(void)viewDidLoad {
[super viewDidLoad];self.navigationController.delegate = self;
// Do any additional setup after loading the view.
}
#pragma mark - UINavigationControllerDelegate
// 将要显示控制器
-
(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
// 判断要显示的控制器是否是自己
BOOL isShowHomePage = [viewController isKindOfClass:[self class]];[self.navigationController.navigationBar setHidden:isShowHomePage];
[self.navigationController setNavigationBarHidden:isShowHomePage animated:YES];
}
@end
运行测试效果完美