IOS 11.x我正在尝试替换导航栏的后退按钮图像以使用自定义后退箭头。以下代码添加了后退箭头,但它不能代替默认的“ <”箭头,现在我看到一个后退按钮有两张图像。
这是我在视图控制器中的代码,它带有两个后退按钮,可以转到下一个视图。
UIBarButtonItem *backButtonItemWithImage = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"backButton"] style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.backBarButtonItem = backButtonItemWithImage;
如果我注释此代码,则后退按钮变为“ <后退”
请提供有关如何解决此问题的建议。预先感谢。
答案 0 :(得分:0)
self.navigationController.navigationBar.backIndicatorImage = [UIImage imageNamed:@"Image"];
self.navigationController.navigationBar.backIndicatorTransitionMaskImage = [UIImage imageNamed:@"Image"];
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
答案 1 :(得分:0)
我在这里的另一个SO帖子中找到了解决方案- how to set image on default back button of navigation bar
这归功于@Badal Shah。
在应用程序委托中。m替换一次后退按钮的图像,现在在整个应用程序中,后退按钮将使用您的自定义图像,而不是默认的'<'
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self customBackButtonForNavigationBar];
}
-(void)customBackButtonForNavigationBar {
//int imageSize = 20;
UIImage *myImage = [UIImage imageNamed:@"backButton"]; //set your backbutton imagename
UIImage *backButtonImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
// now use the new backButtomImage
[[UINavigationBar appearance] setBackIndicatorImage:backButtonImage];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:backButtonImage];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-400.f, 0)
forBarMetrics:UIBarMetricsDefault];
}
现在,如果要删除后退按钮的标题,则可以执行以下常规代码:
UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButtonItem;
这将确保您的后退按钮仅包含您设置的图像,而没有标题。