iPhone UIBarButtonItem setCustomView:方法?

时间:2010-02-27 10:35:13

标签: iphone cocoa-touch uibutton uibarbuttonitem

我想自定义我的UIBarButtonItem的外观。这是我目前正在使用的代码:

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?我已经看了很多地方,但似乎什么都没有用......

4 个答案:

答案 0 :(得分:0)

我认为您不能将按钮的自定义视图设置为另一个按钮。按钮是复杂的对象,嵌套它们通常不起作用。

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

答案 1 :(得分:0)

您是否尝试使用UIImageView的自定义视图初始化它?如果它工作,您可以创建UIImageView,使其伪造一个经典的UIButton,如下所述:

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

但更一般地说,从UI的角度来看,在“UIBarButtonItem”的地方使用经典的“UIButton”很奇怪:/

答案 2 :(得分:0)

请参阅我对this question的回答。

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

如果您告诉我们,我认为我们可以提供更好的帮助 - 您要实现的总体目标是什么?这样我们就可以提供可行的解决方案。

答案 3 :(得分: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;