ios – UIBarButtonItem与自定义图像,没有边框

我想用自定义图像创建一个UIBarButtonItem,但我不想要iPhone添加的边框,因为我的图像有一个特殊的边框。

它与后退按钮相同,但是前进按钮。

这个应用程序是一个inHouse项目,所以我不在乎,如果苹果拒绝或批准它或喜欢它:-)

如果我使用initWithCustomView:v属性的UIBarButtonItem,我可以做到:

UIImage *image = [UIImage imageNamed:@"right.png"];

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage: [image stretchableImageWithLeftCapWidth:7.0 topCapHeight:0.0] forState:UIControlStateNormal];
[button setBackgroundImage: [[UIImage imageNamed: @"right_clicked.png"] stretchableImageWithLeftCapWidth:7.0 topCapHeight:0.0] forState:UIControlStateHighlighted];

 button.frame= CGRectMake(0.0, 0.0, image.size.width, image.size.height);

[button addTarget:self action:@selector(AcceptData)    forControlEvents:UIControlEventTouchUpInside];

UIView *v=[[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, image.size.width, image.size.height) ];

[v addSubview:button];

UIBarButtonItem *forward = [[UIBarButtonItem alloc] initWithCustomView:v];

self.navigationItem.rightBarButtonItem= forward;

[v release];
[image release];

这工作,但如果我必须重复这个过程在10个视图,这不是干。

我想我必须子类,但什么?

> NSView?
> UIBarButtonItem?

谢谢,

问候,

您可以向UIBarButtonItem添加一个方法,而无需使用自定义类别对其进行子类化:

@interface UIBarButtonItem(MyCategory)

+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image target:(id)target action:(SEL)action;

@end

@implementation UIBarButtonItem(MyCategory)

+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image target:(id)target action:(SEL)action{
 // Move your item creation code here
}
@end

所以在你的代码中的任何地方,你可以创建bar项目调用这个方法(前提是你包含一个标题及其声明)。

P.S。你不需要使用’v’UIView,因为你可以创建UIBarButtonItem与一个按钮作为自定义视图直接。
P.P.S.您还需要在代码中使用[forward release]。

http://stackoverflow.com/questions/2681321/uibarbuttonitem-with-custom-image-and-no-border

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ios – UIBarButtonItem与自定义图像,没有边框