UINavigationController相关
1. UINavigationController 视图结构
UINavigationController(导航控制器)是一个容器控制器, 其内部展示着多个UIViewController(视图控制器)的内容, 我们可以通过UINavigationController的view属性获取到其自身的视图, 在该视图上有一个位于界面顶部的UINavigationBar(导航栏)和位于界面底部的默认隐藏的UIToolbar(工具栏), 以及一个位于界面中间部分的UIViewController的view
当用户在UINavigationController的层级结构中来回切换时, UINavigationBar和UIToolbar的内容会随着发生变化, 但是其本身并不会发生变化, 唯一发生变化的就是位于界面中间部分的UIViewController的view
2. UINavigationController堆栈管理
UINavigationController通过其管理的UIViewController堆栈来决定展示在UINavigationController中间部位的内容,
该内容由位于UIViewController堆栈栈顶位置的UIViewController来决定。
我们可以利用系统提供的方法向UIViewController堆栈中Push一个UIViewController,
从UIViewController堆栈中Pop一个UIViewController, 也可以直接设置UIViewController堆栈中的全部UIViewController
3. UINavigationBar管理
UINavigationController负责创建、配置及管理UINavigationBar, 其通过位于UIViewController堆栈栈顶位置的UIViewController的navigationItem属性(该属性位于UIViewController的UINavigationControllerItem类目中)来管理UINavigationBar展示的内容,
同时UINavigationController也提供了navigationBar属性, 允许开发者通过该属性设置UINavigationBar的外观。UINavigationBar是一个在层级结构中起导航作用的视觉控件, 其一般展示形式如下图所示:
UINavigationBar虽然继承自UIView, 但是其并非通过addSubview:方法来添加子视图, 而是通过其管理的UINavigationItem堆栈来决定展示在UINavigationBar中的内容
层次结构图:
我们可以利用系统提供的方法向UINavigationItem堆栈中Push一个UINavigationItem,
从UINavigationItem堆栈中Pop一个UINavigationItem, 也可以直接设置UINavigationItem堆栈中的全部UINavigationItem
修改导航栏颜色:
(1) 设置导航栏背景颜色 : 直接设置 navigationBar.barTintColor
(2) 设置导航栏背景图片: navigationBar.setBackgroundImage:****
4. UIToolBar管理
UINavigationController负责创建、配置及管理UIToolbar, 其通过位于UIViewController堆栈栈顶位置的UIViewController的toolbarItems属性(该属性位于UIViewController的UINavigationControllerContextualToolbarItems类目中)来管理UIToolbar展示的内容,
同时UINavigationController也提供了toolbar属性, 允许开发者通过该属性设置UIToolbar的外观