跟进this question,接受的答案描述了一种全局自定义UINavigationController
后退按钮的方法,在名为{{1}的类别的实现中使用此代码}:
UINavigationItem+MyBackButton.h
只要我只想自定义标题,此代码就可以正常使用。当我想要潦倒并且尝试自定义背景图像时,没有任何反应,我得到了默认的后退按钮,显示堆栈上前一个#import "UINavigationItem+MyBackButton.h"
@implementation UINavigationItem (MyBackButton)
-(UIBarButtonItem*)backBarButtonItem
{
UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
initWithTitle: @"Back Button Text"
style: UIBarButtonItemStyleBordered
target: nil action: nil];
return [backButton autorelease];
}
@end
的{{1}}:
title
我还尝试将UIViewController
与此代码一起使用:
- (UIBarButtonItem *)backBarButtonItem
{
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *backButtonImage = [UIImage imageNamed:@"back"];
[backButton setBackgroundImage:backButtonImage forState:UIControlStateNormal];
backButton.frame = CGRectMake(0, 0, 18, 27); // CGRectMake(0, 0, 23, 36);
UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithCustomView:backButton] ;
[backBarButton setTarget:nil];
return backBarButton;
}
但这只会导致后退按钮的扭曲版本仍然显示前一个UIAppearance
的{{1}}。
所以,我的问题是全局自定义后退按钮的最简单方法是什么,它不显示上一个UIImage *imgBack = [[UIImage imageNamed:@"back"] resizableImageWithCapInsets:UIEdgeInsetsMake(-6, 22, -6, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:imgBack forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
的标题,而只显示我的自定义图像?
注意:我想避免继承title
,并且必须在每个UIViewController
内明确设置后退按钮,实际上以下代码适用于此,如果放置,例如在UIViewController
UINavigationController
所以,我正在寻找的是一种真正全球化的方式来完全自定义后退按钮。