无NavigationBar到有NavigationBar视图切换时的一个坑
来源:互联网 发布:java sql防注入 编辑:程序博客网 时间:2024/05/17 15:58
http://www.cnblogs.com/manji/p/4810444.html
无NavigationBar到有NavigationBar视图切换时的一个坑
NavigationController在iOS App中是最常见不过了,可以说是每个App中必备的了。自iOS7开始,系统自带的右滑返回效果,也可以让有NavigationBar的视图切换很丝滑流畅。当然你也可能会遇到有些视图并没有NavigationBar(实际上是隐藏了),然后从这样的视图中push一个有NavigationBar的视图,这种需求很常见(姑且不讨论这种设计到底合不合适),实现起来也很简单,就是在不同的视图里对NavigationBar设置隐藏和显示就可以了,代码如下:
1 - (void)viewWillAppear:(BOOL)animated {2 3 [super viewWillAppear:animated];4 5 self.navigationController.navigationBarHidden = YES;6 7 }
这里需要注意一点,因为设置NavigationBar的隐藏或显示是作用到当前navigationcontroller的,他会影响到整个navigationcontroller的NavigationBar的显示情况,所以一定要放到viewWillAppear里,不能放到viewDidLoad里。
看下效果:
嗯,好像还不错。等等,pop的时候好像右上角有个黑色的东东,那是什么鬼?用iOS7系统自带的右滑返回功能仔细看看(手指按住不松开可以慢慢移动看看效果):
哦,shit!告诉我这不是真的!但这就是真的!接受现实吧,骚年!
心中一万只草泥马奔腾过后,开始寻找解决办法。
开始以为是NavigationBar透明度的问题,试了好几个方案没有解决。
最后无意中找到解决办法,然后差点哭晕在厕所,代码如下:
1 - (void)viewWillAppear:(BOOL)animated {2 [super viewWillAppear:animated];3 4 // self.navigationController.navigationBarHidden = YES;5 [self.navigationController setNavigationBarHidden:YES animated:YES];6 }
再看下现在的效果:
嗯,不错!很有丝滑的感觉,嘿嘿!
总结一下,问题的关键在于那个animated,必须是YES才能达到理想的效果,如果换成下面的代码[self.navigationController setNavigationBarHidden:YES animated:NO],依然会有黑色底。定位到这个方法里看到这么一句话:
If animated, it will transition vertically using UINavigationControllerHideShowBarDuration.
大致意思是如果animated=YES,会使用UINavigationControllerHideShowBarDuration进行垂直过渡。UINavigationControllerHideShowBarDuration是一个CGFloat类型的常量。
可是我并没有很好的理解它所谓的transition vertically到底是个什么概念,也许就是后来看到的那个效果吧。。。
(文笔不好,如有错误,欢迎指正,不甚感激)
- 无NavigationBar到有NavigationBar视图切换时的一个坑
- 无NavigationBar到有NavigationBar视图切换
- 隐藏NavigationBar时的一个坑
- 隐藏NavigationBar时的一个坑
- navigationBar带来的坑
- 转 navigationBar 的坑
- navigationBar
- Navigationbar
- NavigationBar
- 改变项目中一个navigationBar的颜色
- 这种方式很好的解决了当前页面有navigationbar,而跳转到的页面却不需要Navigationbar的情况(来自电池管家)
- NavigationBar设置背景图片后,内容视图会下移的问题
- navigationBar对视图布局的影响,今天终于弄清楚了
- iOS开发 -- IOS7界面兼容,从4.3到7.0兼容的NavigationBar ,IOS7 NavigationBar 适配
- 如何让主界面NavigationBar隐藏,而push到的下一个界面显示NavigationBar?
- iOS 将一个View显示覆盖到NavigationBar上面
- ios navigationBar.hidden 和 navigationBarHidden 的坑
- navigationbar 的标题
- Eclipse的调试
- haproxy+keepalived实现高可用
- 字符串比较问题
- matlab矩阵分解
- <9>编写硬件抽象层模块接口
- 无NavigationBar到有NavigationBar视图切换时的一个坑
- 各类英语证书汇总
- hibernate
- iic协议是什么?iic总线特点_iic总线工作原理
- Linux自动备份MySql数据库
- RequireJS以及AMD规范入门实践
- mysql中char与varchar的区别 哪种字段的查找效率高
- python调取hive 和sqoop之二
- 绝对的小抄:Photoshop的快捷键