UINavigationController/导航控制器
一.相关控件
UIBarItem:一个可以放置在bar之上的所有小控件抽象类,可以设置标题图片等
UIBarButtonItem:继承上面,增加了动作和目标等button属性,相当于放在ToolBar或者bar的特殊button
UINavigationItem:包含title,prompt,titleview,left,rig,back ButtonItem页面的所有信息
UINavigationBar:导航栏
toobar 底部标签栏,navigation自带默认隐藏
二.属性
//属性
title:导航栏内容标题
titleView:导航栏中间内容视图
Prompt:提示
backBarButtonItem:返回
hidesBackButton:是否隐藏返回按钮
leftBarButtonItems:左边itmes属性
rigBarButtonItems:右边
left/rigBarButtonItem:左右边item
三.修改导航栏字体大小和颜色
[self.navigationController.navigationBar setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:19],NSForegroundColorAttributeName:[UIColor redColor],NSBackgroundColorAttributeName:[UIColor yellowColor]}];
四.修改导航栏背景色
//修改导航栏背景色(只能在rootView中设置才有效)
[UINavigationBar appearance].barTintColor = [UIColor yellowColor];
//下面这个方法无效果
self.navigationController.navigationBar.tintColor = [UIColor redColor];
//修改导航栏背景色
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
// //添加导航栏背景图片或者修改背景色 如果第二个参数是UIBarMetricsDefault那么图片颜色就是背景色
// [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"timg1.jpg"] forBarMetrics:UIBarMetricsDefault];
五.去掉导航栏下面一条线
/去除导航栏下面的一条线
[self.navigationController.navigationBar setShadowImage:[UIImage new]];
六.添加导航栏左右按钮
UIButton *leftbtn = [[UIButton alloc]init];
[leftbtn setTitle:@"left1" forState:UIControlStateNormal];
[leftbtn addTarget:self action:@selector(btnleftClack) forControlEvents:UIControlEventTouchUpInside];
leftbtn.layer.borderColor = [UIColor redColor].CGColor;
leftbtn.layer.borderWidth = 2.0f;
leftbtn.layer.cornerRadius = 10.0;
UIButton *leftbtn1 = [[UIButton alloc]init];
[leftbtn1 setTitle:@"left2" forState:UIControlStateNormal];
[leftbtn1 addTarget:self action:@selector(btnleftClack) forControlEvents:UIControlEventTouchUpInside];
leftbtn1.layer.borderColor = [UIColor redColor].CGColor;
leftbtn1.layer.borderWidth = 2.0f;
leftbtn1.layer.cornerRadius = 10.0;
UIBarButtonItem *lefItem =[[UIBarButtonItem alloc]initWithCustomView:leftbtn];
UIBarButtonItem *lefItem1 =[[UIBarButtonItem alloc]initWithCustomView:leftbtn1];
self.navigationItem.leftBarButtonItems = @[lefItem,lefItem1];
七.导航栏添加原色按钮
//添加导航栏图片按钮并使导航栏添加按钮保持原色
UIBarButtonItem *rightBarItem = [[UIBarButtonItem alloc] initWithTitle:nil style:UIBarButtonItemStylePlain target:self action:@selector(btnleftClack)];
self.navigationItem.rightBarButtonItem = rightBarItem;
[self.navigationItem.rightBarButtonItem setImage:[[UIImage imageNamed:@"sanheng"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
八.修改返回按钮字体颜色
self.navigationController.navigationBar.tintColor = [UIColor blackColor];
九.去掉返回按钮文字
//去掉返回文字
self.navigationController.navigationBar.topItem.title = @"";
十.自定返回按钮
UIButton *leftbtn1 = [[UIButton alloc]init];
[leftbtn1 setTitle:@"返回" forState:UIControlStateNormal];
[leftbtn1 setTitleColor:[UIColor purpleColor] forState:UIControlStateNormal];
[leftbtn1 addTarget:self action:@selector(btnleftClack) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *lefItem1 =[[UIBarButtonItem alloc]initWithCustomView:leftbtn1];
self.navigationItem.leftBarButtonItem =lefItem1;
十一.跳转
//返回根页面
[self.navigationController popToRootViewControllerAnimated:YES];
返回上一视图
[self.navigationController popViewControllerAnimated:YES];
返回指定的某个vc
for (UIViewController *vc in self.navigationController.viewControllers) {
if ([vc isKindOfClass:[ViewController class]]) {
[self.navigationController popToViewController:vc animated:YES];
}
}
十二.定制ToolBar(工具条)
//每个导航控制器,还配备了工具条(44坐标高),默认隐藏
【注】toolBar属于NavigationController,一个导航控制器,只有一个
【注】toolBarItems属于每个视图控制器,每个视图控制器单独定制
(1)拿到导航控制器中工具栏的方法
self.navigationController.toolbarHidden=NO
self.navigationController.toolbar
(2)设置工具栏的背景图片
- (void)setBackgroundImage:(UIImage *)backgroundImage forToolbarPosition:(UIBarPosition)topOrBottom barMetrics:(UIBarMetrics)barMetrics
(3)self.toolbarItems 设置底部,数组中每个元素必需是UIBarButtonItem
注意:视图控制器的title属性能同时为navigationItem.title和tabBarItem.title赋值