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

首先 贴出 灵感 来源 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];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容