iOS 7 UINavigationBar 在视图转换时未隐藏
Posted
技术标签:
【中文标题】iOS 7 UINavigationBar 在视图转换时未隐藏【英文标题】:iOS 7 UINavigationBar not hidden while view transition 【发布时间】:2013-10-31 03:05:24 【问题描述】:我有像 vc1 -> vc2 -> vc1 这样的视图控制器转换。我需要将 UINavigationBar 隐藏在 vc1 中,并显示在 vc2 中。
我执行以下操作:
- (void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
self.navigationController.navigationBarHidden = YES;
- (void)viewWillDisappear:(BOOL)animated
[super viewWillDisappear:animated];
self.navigationController.navigationBarHidden = NO;
在 ios6 中,它运行良好。但是在iOS7中,当我从vc1回到vc2时,导航栏没有隐藏,而是在状态栏后面向上移动,过渡动画完成后导航栏被隐藏了。
如何才能真正隐藏导航栏?
【问题讨论】:
【参考方案1】:试试这样:
-(void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES];
-(void)viewWillDisappear:(BOOL)animated
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO];
或尝试这样:
- (void)viewWillAppear:(BOOL)animated
[self.navigationController setNavigationBarHidden:YES animated:animated];
[super viewWillAppear:animated];
- (void)viewWillDisappear:(BOOL)animated
[self.navigationController setNavigationBarHidden:NO animated:animated];
[super viewWillDisappear:animated];
【讨论】:
谢谢。使用 [self.navigationController setNavigationBarHidden:YES animated:animated] 有效!【参考方案2】:在 VC2 控制器中把这个放在 - viewDidLoad
[self.navigationController setNavigationBarHidden:NO];
在 VC1 控制器中将其放入 -ViewDidLoad
[self.navigationController setNavigationBarHidden:YES];
然后VC1也添加这个
- (void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES];
希望对你有帮助...
【讨论】:
以上是关于iOS 7 UINavigationBar 在视图转换时未隐藏的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 UINavigationBar 在 iOS 7 中覆盖视图顶部?
ios 7子视图UINavigationBar与状态栏重叠..任何简单的解决方案..?
iOS 7 UITableView 在 UINavigationBar 下扩展
iOS 7.1 UINavigationbar 和 UIToolbar