方案1
下面两行就是自定义,替换系统的“<"图标
[self.navigationController.navigationBar setBackIndicatorImage:[UIImage imageNamed:@"navibar_back_btn_bg_normal.png"]];
[self.navigationController.navigationBar setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"navibar_back_btn_bg_normal.png"]];
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationItem.backBarButtonItem = backItem;
这个方法,如果只是适配iOS 7以上,那么,是目前比较好的解决方案了。
特点:
1.实现了自定义图标,可以没有文字,
2.保存了iOS 7以上系统的pop手势返回。
根据文档:
1、只有这两个属性都设置了,才会显示自定义的图片。
2、这两个属性,只能用于iOS 7以上。
3、很多人问为什么要设置“backIndicatorTransitionMaskImage”这个属性,看官方文档就知道,当push、pop时显示的是这张image,但是疑问的是,当我设置这张照片跟“backIndicatorImage”属性的照片不一样时,系统不管是push,还是pop,还是完成时,都只会显示"backIndicatorImage"属性设置的照片。但由于文档没有更多信息,所以,这个问题我也就没有找到答案。
注意!!!!自定义视图无效!
UIView * view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 30, 44)];
view.backgroundColor = [UIColor colorWithRed:0.263 green:1.000 blue:0.311 alpha:1.000];
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:view];
self.navigationItem.backBarButtonItem = backItem;
方案2
注意这个相对第1个自定义照片的区别:backBarButtonItem不能用View视图方法自定义,而leftBarButtonItem可以哦!
UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setImage:[UIImage imageNamed:@"navibar_back_btn_bg_normal.png"] forState:UIControlStateNormal]; [button setFrame:CGRectMake(0, 0, 30, 44)]; [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem * barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; self.navigationItem.leftBarButtonItem= barButtonItem;
记得加上
self.navigationController.interactivePopGestureRecognizer.delegate = self;
才有手势返回哦