我正在隐藏viewDidLoad
中的状态栏和导航栏- (void)viewDidLoad {
[super viewDidLoad];
[self.navigationController setNavigationBarHidden:YES animated:YES];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
一切正常。但是,当我关闭视图控制器时,在viewWillDisappear中:我这样做:
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
[[UIApplication sharedApplication] setStatusBarHidden:NO];
}
这导致我的所有观点都被严重定位:
我做错了什么? 感谢
答案 0 :(得分:1)
我没有尝试过,所以我只是在猜测。
您的导航栏的框架设置就像没有Status bar
一样。有些事情是按照错误的顺序完成的
所以在你的代码中我看到当没有状态栏时,要求导航栏可见。
[self.navigationController setNavigationBarHidden:NO animated:YES];
[[UIApplication sharedApplication] setStatusBarHidden:NO];
您是否尝试过反转这两行? (我只是在猜测)
我的另一个测试是在viewDidAppear中设置导航栏 那时applicationFrame应该已经更新到状态栏再次可见的事实。
我测试了它,并且反转调用使其工作。但是你不会得到导航栏和状态栏的动画。如果您需要,我建议您将这些来电置于viewWillAppear
或viewDidAppear
答案 1 :(得分:0)
我认为,当显示导航栏时,应用程序状态栏仍然隐藏,因此导航栏offsetY为0.您应该更改两种调用方法的顺序。
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}