2010-02-27 79 views
1

我想定制我的UIBarButtonItem的外观。这里是我目前使用的代码:iPhone UIBarButtonItem setCustomView:方法?

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(267, 6, 48, 30)]; 
[editButton setCustomView:button]; // editButton is the UIBarButtonItem 

不幸的是,UIButton没有被绘制,即它是100%透明的。 我知道这个按钮是存在的,因为当我添加一行代码,如下所示:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(267, 6, 48, 30)]; 
[editButton setCustomView:button]; // editButton is the UIBarButtonItem 
UIRectFill(button.frame); 

我看到一个黑色的方形出现在按钮应该出现的位置。

如何让我的UIButton被绘制?我已经看了很多地方,但似乎没有工作...

+0

,祝你好运。 http://stackoverflow.com/questions/7950644/how-to-customize-uibarbuttonitem-in-ios5 – user1021484 2011-11-01 02:51:56

回答

0

我不认为你可以设置按钮的自定义视图到另一个按钮。按钮是复杂的对象,像这样嵌套它们通常不起作用。

自定义视图属性应该是装饰,而不是功能。您应该为UIBarButtonItem加载一个自定义视图,并让它处理实际的按钮逻辑。

+0

已经尝试过与UIImageView,不起作用,它仍然只是消失。 – ryyst 2010-02-27 19:51:56

0

你是否尝试用自定义视图初始化它是一个UIImageView?如果一切正常,你可以将它伪造一个经典的UIButton这样的方式创建的UIImageView如下所述:更普遍

How can I create a big, red UIButton with the iPhone SDK?

但是,从UI的角度来看,这是奇怪,有经典的“UIButton的”在“UIBarButtonItem”的地方:/

+0

试过了,同样的事情:按钮就消失了。 – ryyst 2010-02-27 19:51:08

0

请参考我的回答this question

我认为最好避免将UIButton放入UIBarButtonItem之内。他们或多或少地做同样的事情,而BBI的存在是有原因的 - 它们与UIButton相比是轻量级的,并且与UINavigationItems有着良好的关系。

我认为如果您告诉我们我们可以提供更好的帮助 - 您试图达到的总体目标是什么?这样我们可以帮助提供一个可行的解决方案。

0

我有类似的问题;该按钮没有出现,在该空间中敲击也没有做任何事情。设置按钮的边界似乎是使它工作的魔法。

下面是我使用的设置右按钮的代码:我有和你一样,也正在等待解决的一个问题

UIButton* addButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[addButton addTarget:self action:@selector(onAdd) forControlEvents:UIControlEventTouchUpInside]; 
[addButton setImage:[UIImage imageNamed:@"button_plus.png"] forState:UIControlStateNormal]; 
addButton.bounds = CGRectMake(0, 0, 30, 30); 
UIBarButtonItem* addItem = [[UIBarButtonItem alloc] initWithCustomView:addButton]; 
navitem.rightBarButtonItem = addItem;