iOS 修改navigationController返回按钮颜色和文字
引言
在iOS开发过程中,NavigetionController(导航栏)算是比较常用的一种控件,而系统自带的样式有时候往往不是我们所需要的,这时候就要求我们必须自定义或修改一下。
修改返回键的标题
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切换到下一个视图时,navigation controller按照以下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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix