UINavigationController是iOS中非常常用的控件,之前用到哪个属性就去搜下设置下,一直都没有特别关注这个控件现在整理一下。
如有问题请指正。
如无特殊说明,后续文章环境均如下
xcode环境:8.0
模拟器:iPhone6
iOS系统版本 8.0
我分为若干个章节吧,以后有需要补充的继续往上增加。
(一)层级篇:
从UI视图上最直观地了解UINavigationController;
(二)bar与item的关系篇:
经常一会儿设置bar一会儿设置item,我们经常需要设置的属性到底是对谁设置的?
(三)毛玻璃篇:
什么是毛玻璃,为什么会有毛玻璃,怎么完全理解毛玻璃产生了什么影响;
(四)做一个透明渐变篇:
当然不止是透明渐变,你可以做更多你喜欢的,这只是个思路;
这一篇先说层级,这一篇我不准备写较多的东西,只从直观的UI上说明问题。
我们创建个非常简单的工程,设置出一个UINavigationController,在层级上我们可以看到如下:
注意:由于xcode版本不一样或者某些原因所显示的层级会有所不同,在做一些测试的时候得到的效果也不尽然相同,但这点并不影响我们的主线任务
从UI层级上我们能清楚地看到UINavigationBar(层级中选中状态)及下层的子控件是我们需要操作的单元。而事实上从官方给我们留出的接口上来看bar是我们可操作的最低层UI单元,图中所显示的其它内部实例变量我们很难获取到。
这是最原始的bar,下面我们一点一点加些东西再来看下层级。
首先我们设置个标题,层级如下:
我们可以看到标题这个lab处在Bar下的第一级子视图,而且处在最上层,对原始状态的Bar下的视图除了遮挡并无产生任何影响。
我们再加个右侧的按钮,效果也是一样的,而且应该是一种懒加载模式。
由于我们能操作的单元为Bar,所以在你自定义一些东西往Bar上添加时就要留心,尽量在初始化UINavigationController时就完成这些操作,否则很可能会对一些懒加载控件产生影响。这点在第四篇再细说。
应该注意到,原始状态下的UINavigationController包含的仅仅只有Bar,没有Item,item本身并不属于UINavigationController,这点在第二篇会细说。