修改返回键的标题
1、错误使用:以下三种方式都不能修改返回键的title(方式三可以修改NavigetionItem的leftBarButtonItem,但不能修改backBarButtonItem的样式)
//最近iOS项目中要求导航栏的返回按钮只保留那个箭头,去掉后边的文字,在网上查了一些资料,最简单且没有副作用的方法就是
[[UIBarButtonItem appearance]setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];
// 方式一
self.navigationItem.leftBarButtonItem.title = @"返回";
// 方式二
self.navigationItem.backBarButtonItem.title = @"返回";
// 方式三
UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake( 0, 0, 80, 49);
[button setTitle:@"返回" forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem* backButtonItem = [[UIBarButtonItem alloc]initWithCustomView:button];
self.navigationItem.backBarButtonItem = backButtonItem;
2、正确使用:
// 细节: 本界面上设置, 下个界面上显示
// 方式一
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:nil action:nil];
// 方式二
UIBarButtonItem* backButtonItem = [[UIBarButtonItem alloc]init];
backButtonItem.title = @"返回";
self.navigationItem.backBarButtonItem = backButtonItem;
由图可以看出,想要修改返回键的颜色可以:
self.navigationController.navigationBar.tintColor = [UIColor redColor];
最后说一下使用pushViewController切换到下一个视图时,navigationController按照以下3条顺序更改导航栏的左侧按钮(本段摘自网络):
1、如果B视图有一个自定义的左侧按钮(leftBarButtonItem),则会显示这个自定义按钮;
2、如果B没有自定义按钮,但是A视图的backBarButtonItem属性有自定义项,则显示这个自定义项;
3、如果前2条都没有,则默认显示一个后退按钮,后退按钮的标题是A视图的标题;
扩展1:
// 设置导航条的色调 理解为"混合色"
self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
// 导航栏默认是半透明状态
self.navigationController.navigationBar.backgroundColor = [UIColor blueColor];
// 左边返回按键颜色
// 导航栏标题颜色
[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
self.navigationController.navigationBar.translucent = NO;
扩展2:
UITextAttributeFont - 字体
UITextAttributeTextColor - 文字颜色
UITextAttributeTextShadowColor - 文字阴影颜色
UITextAttributeTextShadowOffset - 偏移用于文本阴影