自定义按钮initWithImage显示自定义图像后面的默认按钮

时间:2012-08-06 23:47:13

标签: ios xcode uibutton

我正在尝试使用自定义图像为我的导航栏创建一个按钮。当我运行以下代码时,按钮会按原样出现,除了你可以在它后面看到另一个更宽的按钮,伸出两侧。如何摆脱其他按钮?

UIBarButtonItem *emailButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"emailBut"]
                                                                style:UIBarButtonSystemItemCompose
                                                               target:self 
                                                               action:@selector(emailSheet)];
self.navigationItem.rightBarButtonItem = emailButton;

2 个答案:

答案 0 :(得分:1)

嗯...... UIBarButtonSystemItemCompose是一个系统图标,所以我猜你可能会在上面覆盖你的图标。您应该使用UIBarButtonItemStylePlain(或其他样式)作为style:参数。

修改

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(...)];
[button setBackgroundImage:someImage];
[button addTarget:self action:@selector(something:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
[self.navigationItem setRightBarButtonItem:barButtonItem];

答案 1 :(得分:1)

好的,出于某种原因,initWithImage只将图像放在默认按钮的中心。修复是针对iBlue建议的initWithCustomView。

另外需要注意的是barBackButton不允许自定义视图,因此我不得不使用自己的返回方法将其设置为leftButton而不是backButton。我希望Apple将来能够更轻松。