删除iOS7中的后退箭头

在这里输入图像说明

我想要包含一个自定义的后退button – 我可以使用上面的结果

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back-btn"] style:UIBarButtonItemStylePlain target:nil action:nil]; 

但如何删除原生蓝色button?

使用下面的代码来隐藏后退箭头:

 self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back-btn"] style:UIBarButtonItemStylePlain target:nil action:nil]; if ([UINavigationBar instancesRespondToSelector:@selector(setBackIndicatorImage:)]) { [[UINavigationBar appearance] setBackIndicatorImage:[[UIImage alloc] init]]; [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[[UIImage alloc] init]]; } 

在iOS7 +中,您可以使用navigationBar的backIndicatorImagebackIndicatorTransitionMaskImage来实现所需的自定义箭头。 下面的Swift代码:

 self.navigationController?.navigationBar.backIndicatorImage = UIImage(named:"button-backArrow18x15") self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named:"button-backArrowMask18x15") 

如果要隐藏“后退”文本,可以将前一个视图的title设置为单个空格“”或使用没有标题的自定义UIBarButtonItem

你可以隐藏后台button

  self.navigationItem.hidesBackButton=YES; 

要创build自定义leftbarbutton,你可以使用这个:

 UIButton* someButton = [UIButton buttonWithType:UIButtonTypeCustom]; [someButton setFrame:frame]; [someButton setBackgroundImage:@"youArroImageName" forState:UIControlStateNormal]; [someButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [someButton setShowsTouchWhenHighlighted:YES]; UIBarButtonItem* someBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:someButton]; [self.navigationItem setLeftBarButtonItem:someBarButtonItem]; 

检查这一个:

  UIImage *faceImage = [UIImage imageNamed:@"back_arrow.png"]; UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom]; face.bounds = CGRectMake( 10, 0, faceImage.size.width, faceImage.size.height ); [face addTarget:self action:@selector(handleBack:) forControlEvents:UIControlEventTouchUpInside]; [face setImage:faceImage forState:UIControlStateNormal]; UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:face]; self.navigationItem.leftBarButtonItem = backButton; [self.navigationItem setHidesBackButton:YES animated:YES]; [self.navigationItem setBackBarButtonItem:nil]; -(IBAction)handleBack:(id)sender { // [self dismissViewControllerAnimated:YES completion:nil]; [self.navigationController popViewControllerAnimated:YES]; } 

感谢所有的回答者 – 发现了一个更简单的方法…

 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back-btn"] style:UIBarButtonItemStylePlain target:self action:@selector(backButtonAction:)]; self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor]; [self.navigationItem setHidesBackButton:YES animated:NO]; [self.navigationItem setBackBarButtonItem:nil]; -(void) backButtonAction:(id)sender { [self.navigationController popViewControllerAnimated:YES]; } 

为什么不能用自定义UIButton来尝试:

 UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [btn setFrame:CGRectMake(0.0f, 0.0f, 25.0f, 40.0f)]; [btn addTarget:self action:@selector(buttonEN:) forControlEvents:UIControlEventTouchUpInside]; [btn setImage:[UIImage imageNamed:@"back-btn"] forState:UIControlStateNormal]; UIBarButtonItem *backBtn = [[UIBarButtonItem alloc] initWithCustomView:btn]; self.navigationItem.backBarButtonItem = backBtn; 

我只是面对完全相同的问题,这是我最终做的:

 // First set the back button text to an empty string viewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]; // Set the back-indicator image to the custom image (scaled to 20x20) UIImage *img = [MyUtils imageWithImage:[UIImage imageNamed:@"back"] scaledToSize:CGSizeMake(20, 20)]; [[UINavigationBar appearance] setBackIndicatorImage:img]; [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:img]; // Set the tint color to WHITE [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; 

这是图像缩放方法:

 + (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; } 

上面的缩放方法的信贷去保罗林奇在这个SO问题:( 最简单的方法来调整UIImage? )