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不会对其他视图产生影响。
本文深入解析UINavigationController的结构,包括UINavigationBar、View和UIToolBar的使用,详细讲解了控制器切换时UINavigationBar和UIToolBar的变化,以及如何设置导航栏的标题、背景色、背景图片、返回按钮等属性。
3566

被折叠的 条评论
为什么被折叠?



