iOS 导航栏 隐藏/显示 终极版本

作者: DreamBuddy | 来源:发表于2016-05-06 12:32 被阅读1336次

    首先 贴出 灵感 来源 http://www.jianshu.com/p/a59ce1662557,感谢作者。

    隐藏导航条代码示例

    2016/10/19 更新 Demo地址:Demo在这里啦

    隐藏导航条代码示例

    - (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...

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

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

    在父类中 添加 一个 @property(nonatomic,assign)BOOL hideNavigationBarr;

    如果需要 隐藏当前controller 的bar 就在 viewdidload 中 设置为 YES 即可~

    -(void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

    [self.navigationController setNavigationBarHidden:self.hideNavigationBar animated:animated];

    相关文章

      网友评论

      • imChay:这样写虽然还是有点问题,但应该是目前来说比较好的解决方案了
        DreamBuddy:@Chay丶 讲究效果的话也可以考虑单独导航栏~
      • 有偶像包袱的程序狗:能不能贴出解决导航栏飞来飞去bug的代码来啊,你说我的我有点不太懂,菜鸟勿怪。感谢。
        我qq:378012069
        DreamBuddy:@卢浩仑 没问题
        有偶像包袱的程序狗:@iOS胖码农 第一时间请通知我,项目正好遇到。
        DreamBuddy:@卢浩仑 等我更新吧 预计是 今晚

      本文标题:iOS 导航栏 隐藏/显示 终极版本

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