如何全局自定义后退按钮?

时间:2014-12-04 14:24:18

标签: ios uinavigationcontroller uinavigationbar uinavigationitem uiappearance

跟进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

所以,我正在寻找的是一种真正全球化的方式来完全自定义后退按钮

0 个答案:

没有答案