美文网首页
IOS 导航栏隐藏/显示

IOS 导航栏隐藏/显示

作者: ityanping | 来源:发表于2017-07-17 13:44 被阅读0次

参考来源链接:http://www.jianshu.com/p/1d1e20581624

之前做法:
隐藏导航条代码示例

  • (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];
    }

存在问题:
两个相邻的controller 都这么写 ,就会出现 原声的导航栏 在 push/pop的时候 飞来飞去 像BUG...

原因:两个controller 先后控制 navigationBar的 hide/appear 导致系统动画错乱。

解决办法: 将控制navigationBar的 setNavigationBarHidden: 方法 只在 viewWillAppear 中 实现。
统一添加 。
将所有controller 都是 基于同一个 父类的,这样简单了很多。

在父类中 添加 一个 @property(nonatomic,assign)BOOL hideNavigationBar;
如果需要 隐藏当前controller 的bar 就在 viewdidload 中 设置为 YES 即可~

-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:self.hideNavigationBar animated:animated];
}

相关文章

网友评论

      本文标题:IOS 导航栏隐藏/显示

      本文链接:https://www.haomeiwen.com/subject/jrifkxtx.html