3

我需要有关如何自定义“backBarButtonItem”的帮助,不,我不想使用 LeftBarButtomItem,因为我想继承样式并保持从“BackBarButtom”的过渡

好的,所以我得到的是:

UIBarButtonItem* barbtnItem = [[UIBarButtonItem alloc]initWithCustomView:  [ArrivalProto ArrivalBtnTypeBack]];

[ArrivalProto ArrivalBtnTypeBack]给了我一个自定义的 UIbutton,其中包含一个 setBackgroundImage 和一个 setImage。

然后我要做的就是添加这个来自定义 BackBarButton:

[self.navigationItem setBackBarButtonItem: barbtnItem];

但是不。只是普通的正常后退按钮:(((虽然这似乎有效:

//self.navigationItem setLeftBarButtonItem:barbtnItem];

这也是:

UIImage *btnTrnspBgrImg30 = [[UIImage imageNamed:@"trspBlackBtn30"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)]; 
 [[UIBarButtonItem appearance] setBackButtonBackgroundImage:btnTrnspBgrImg30      forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

信息:

[self.navigationItem setBackBarButtonItem: <#(UIBarButtonItem *)#>];
[self.navigationItem setLeftBarButtonItem:<#(UIBarButtonItem *)#>]
4

1 回答 1

3

从 iOS5 开始,我们有了一种极好的新方法,可以使用外观代理自定义几乎所有控件的外观,即[UIBarButtonItem appearance]. 外观代理允许您在应用程序范围内对控件的外观进行更改。下面是使用外观代理创建的自定义后退按钮的示例。

在此处输入图像描述

使用下面的示例代码创建一个带有自定义图像的后退按钮,用于正常和突出显示状态。从您的 appDelegate 调用以下方法application:didFinishLaunchingWithOptions:

- (void) customizeAppearance {

UIImage *i1 = [[UIImage imageNamed:@"custom_backButton_30px"]
                      resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 6)];
UIImage *i2 = [[UIImage imageNamed:@"custom_backButton_24px"] 
                      resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 6)];

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:i1 
                              forState:UIControlStateNormal 
                              barMetrics:UIBarMetricsDefault];

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:i2 
                              forState:UIControlStateNormal 
                              barMetrics:UIBarMetricsLandscapePhone];

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:i1
                              forState:UIControlStateHighlighted 
                              barMetrics:UIBarMetricsDefault];

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:i2 
                              forState:UIControlStateHighlighted 
                              barMetrics:UIBarMetricsLandscapePhone];
}

这只是一个简单的例子。通常,您希望为正常和突出显示(按下)状态提供单独的图像。

如果您对自定义其他控件的外观感兴趣,可以在这里找到一些很好的示例:http: //ios.biomsoft.com/2011/10/13/user-interface-customization-in-ios-5/

于 2013-03-12T15:35:02.427 回答