每个app都有自己的特色,返回按钮就是其一,但是又不想所有的页面都重新自定义返回按钮,所以就需要统一设置返回按钮。
查了许多资料,找到最简单的方案:设置返回按钮的背景图片为自定义的图片,为了解决会显示Back字样的问题,设置Title偏移到屏幕不可见的位置即可。
把下面代码丢到自定义的tabbar里面就可以了
UIImage *backImage = [UIImage imageNamed:@"return_back"];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[backImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, backImage.size.width, 0, 0)]
forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-233, 0) forBarMetrics:UIBarMetricsDefault];
有一些特殊的页面标题为红色,蓝色什么的,这又需要你重新自定义返回按钮,新的图片。但是你会发现你自定义的返回按钮会与屏幕间隔了一段距离,好丑哦~
直接贴代码
- (void) addLeftButtonItems{
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
backBtn.frame = CGRectMake(0, 0, 20, 44);
[backBtn setImage:[UIImage imageNamed:@"return_back_white"] forState:UIControlStateNormal];
[backBtn addTarget:self action:@selector(doBack) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
target:nil action:nil];
negativeSpacer.width = -5;
self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:negativeSpacer, backItem, nil];
}
-(void)doBack{
[self.navigationController popViewControllerAnimated:YES];
}