首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有自定义图像且无边框的UIBarButtonItem

具有自定义图像且无边框的UIBarButtonItem
EN

Stack Overflow用户
提问于 2010-04-21 16:27:26
回答 9查看 67.3K关注 0票数 89

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

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

这个应用是为一个inHouse项目准备的,所以我不关心苹果是拒绝、批准还是喜欢它:-)

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

代码语言:javascript
复制
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个视图中重复此过程,这是不干的。

我想我不得不子类化,但是什么呢?

?

  • UIBarButtonItem ?

  • NSView

谢谢,

致以敬意,

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-04-21 16:47:58

您可以将方法添加到UIBarButtonItem中,而无需使用自定义类别将其子类化:

代码语言:javascript
复制
@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

因此,在代码中的任何地方,您都可以创建调用此方法的栏项目(前提是在其声明中包含一个头)。

附注:您不需要使用'v‘UIView,因为您可以直接创建带有按钮的UIBarButtonItem作为自定义视图。

另外,在你的代码中你也需要向前发布。

票数 44
EN

Stack Overflow用户

发布于 2012-02-06 14:30:51

另一个简单的解决方案是

  1. 拖动标准选择器选择器
  2. 将按钮的样式设置为自定义,并设置该按钮的图像
  3. 将其拖动到选择器上
票数 50
EN

Stack Overflow用户

发布于 2011-12-23 09:18:48

我发现用这种方法很容易。建议放在最上面。"random.png“必须在项目中。只需拖放任何图像。

代码语言:javascript
复制
 UIButton *a1 = [UIButton buttonWithType:UIButtonTypeCustom];
        [a1 setFrame:CGRectMake(0.0f, 0.0f, 25.0f, 25.0f)];
        [a1 addTarget:self action:@selector(randomMsg) forControlEvents:UIControlEventTouchUpInside];
        [a1 setImage:[UIImage imageNamed:@"config.png"] forState:UIControlStateNormal];
        UIBarButtonItem *random = [[UIBarButtonItem alloc] initWithCustomView:a1];

 //? line incomplete ?//   imageNamed:@"random.png"] style:UIBarButtonItemStylePlain target:self action:@selector(randomMsg)];

    self.navigationItem.rightBarButtonItem = random;
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2681321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档