今天在做毕业设计时,想到要设置全局的返回样式,只要图片,不要文字,形式如下:
![](https://img.haomeiwen.com/i99517/72a0e769c8b09c16.png)
网上有很多种方法,但是我都认为太麻烦,所以看能不能简单的设置一个全局样式
开始时,我设置了如下:
UINavigationBar * navigationBar = [UINavigationBar appearance];
//返回按钮的箭头颜色
[navigationBar setTintColor:[UIColor whiteColor]];
//设置返回样式图片
UIImage *image = [UIImage imageNamed:@"navigationbar_back"];
image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
navigationBar.backIndicatorImage = image;
navigationBar.backIndicatorTransitionMaskImage = image;
以上代码实现了全局的形式如下:
![](https://img.haomeiwen.com/i99517/38db7c658561331b.png)
讨论:全局下,箭头都是自定义样式了,但是文字怎么去掉?网上的方法很多,有用到时在设置,或全局的利用运行时重载方法,问题都是没有达到简单的方法,后来找到这样一个方法如下:
利用全局的UIBarButtonItem,然后巧妙的设置文字的偏移值,达到“隐藏”效果
UIBarButtonItem *buttonItem = [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil];
UIOffset offset;
offset.horizontal = -500;
[buttonItem setBackButtonTitlePositionAdjustment:offset forBarMetrics:UIBarMetricsDefault];
不知道这个方法是不是最简单,和这个方法是不有什么“bug”,能力有限,欢迎指点!
最后效果如下:
![](https://img.haomeiwen.com/i99517/ac06349a58357a38.png)
~nice
- 如果有什么疑问,可以在评论区一起讨论;
- 如果有什么不正确的地方,欢迎指导!
> 注:本文首发于iHTCboy's blog,如若转载,请注明来源。
网友评论
- (void)viewDidLoad {
[super viewDidLoad];
// 更改左按键样式,并设置navigationBar.barTintColor
if (self.navigationController) {
// 自定义左键,贴图,并重写返回方法
UIButton *leftBtn = [UIButton buttonWithType:UIButtonTypeCustom];
leftBtn.frame = CGRectMake(0, 0, 30, 30);
[leftBtn setImage:[UIImage imageNamed:@"btn_back"] forState:UIControlStateNormal];
[leftBtn addTarget:self action:@selector(leftBtnClick) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:leftBtn];
self.navigationController.navigationBar.barTintColor = GWColor(211, 0, 40);
}
}
/**
* 重新实现左按键返回方法
*/
- (void)leftBtnClick
{
if (self.navigationController) {
[self.navigationController popViewControllerAnimated:YES];
}
}