1.结构
UINavigationContrller中包含三个部分,UINavigationBar,View,UIToolBar,UINavigationBar默认显示,UIToolBar默认隐藏
2.控制器切换
UIViewNavigationContrller进行层级切换时,UINavigationBar和UIToolBar的内容会发生改变,本身的控件并不会改变,VC中的View会随之切换。
3.UINavigationBar
-
层级
-
属性设置
-
设置导航栏标题
self.navigationItem.title = @"标题";
-
设置导航栏背景色
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
-
设置导航栏背景图片
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"aa"] forBarMetrics:UIBarMetricsDefault];
-
设置返回按钮颜色、图片、文字
///颜色 self.navigationController.navigationBar.tintColor = [UIColor redColor]; ///图片 self.navigationItem.leftBarButtonItem ///文字 self.navigationItem.rightBarButtonItem
-
设置底部线条失效
[self.navigationController.navigationBar setShadowImage:[UIImage new]]
-
设置多个item
self.navigationItem.leftBarButtonItems self.navigationItem.rightBarButtonItems
-
中部添加控件
self.navigationItem.titleView
-
全局属性设置
[UINavigationBar appearance].barStyle [[UINavigationBar appearance] setBarTintColor:[UIColor redColor]]; [[UINavigationBar appearance] setTintColor:[UIColor redColor]];
-
3.NavigationBarItem && NavigationBar
实际开发中我们经常会碰到下面几个属性
///self是ViewController
self.navigationController.navigationBar
self.navigationController.navigationItem
self.navigationItem
这其中navigationController.navigationItem基本没有用处,我们日常开发中修改的是self.navigationItem也就是ViewController控制器的navigationItem,而self.navigationController.navigationItem只是因为UINavigationController继承自UIViewController才会带有属性,实际开发给这个属性赋值,并不能获取到想要的结果。
UINavigationBar是一个视图管理控件,属于UINavigationController,而navigationItem是属于具体的VC的,每一个VC自带一个navigationitem,设置某个VC的item不会对其他视图产生影响。