自定义iOS的Back按钮(backBarButtonItem)

方案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;

才有手势返回哦

你可能感兴趣的:(自定义iOS的Back按钮(backBarButtonItem))