iOS剖析UINavigationController(一)层级篇

UINavigationController是iOS中非常常用的控件,之前用到哪个属性就去搜下设置下,一直都没有特别关注这个控件现在整理一下。

如有问题请指正。

如无特殊说明,后续文章环境均如下

xcode环境:8.0
模拟器:iPhone6
iOS系统版本 8.0

我分为若干个章节吧,以后有需要补充的继续往上增加。

(一)层级篇:
从UI视图上最直观地了解UINavigationController;
(二)bar与item的关系篇:
经常一会儿设置bar一会儿设置item,我们经常需要设置的属性到底是对谁设置的?
(三)毛玻璃篇:
什么是毛玻璃,为什么会有毛玻璃,怎么完全理解毛玻璃产生了什么影响;
(四)做一个透明渐变篇:
当然不止是透明渐变,你可以做更多你喜欢的,这只是个思路;

这一篇先说层级,这一篇我不准备写较多的东西,只从直观的UI上说明问题。

我们创建个非常简单的工程,设置出一个UINavigationController,在层级上我们可以看到如下:

F3939ADE-1BA3-401E-B7C9-7D86B9D23F11.png
247C75D9-6B93-4EC0-A15A-79F06294CCED.png

注意:由于xcode版本不一样或者某些原因所显示的层级会有所不同,在做一些测试的时候得到的效果也不尽然相同,但这点并不影响我们的主线任务

从UI层级上我们能清楚地看到UINavigationBar(层级中选中状态)及下层的子控件是我们需要操作的单元。而事实上从官方给我们留出的接口上来看bar是我们可操作的最低层UI单元,图中所显示的其它内部实例变量我们很难获取到。

这是最原始的bar,下面我们一点一点加些东西再来看下层级。
首先我们设置个标题,层级如下:

22BCB232-B1FB-455B-8D03-46B9395B854E.png
306658FE-CB8A-47BA-A5AE-30FDF09E9287.png

我们可以看到标题这个lab处在Bar下的第一级子视图,而且处在最上层,对原始状态的Bar下的视图除了遮挡并无产生任何影响。

我们再加个右侧的按钮,效果也是一样的,而且应该是一种懒加载模式。

由于我们能操作的单元为Bar,所以在你自定义一些东西往Bar上添加时就要留心,尽量在初始化UINavigationController时就完成这些操作,否则很可能会对一些懒加载控件产生影响。这点在第四篇再细说。

应该注意到,原始状态下的UINavigationController包含的仅仅只有Bar,没有Item,item本身并不属于UINavigationController,这点在第二篇会细说。

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

推荐阅读更多精彩内容