0

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

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

2 回答 2

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];
于 2012-08-06T23:50:24.423 回答
1

好的,由于某种原因 initWithImage 只将图像放在默认按钮的中心。解决方法是按照 iBlue 的建议进行 initWithCustomView 。

需要注意的另一件事是 barBackButton 不允许自定义视图,因此我必须使用我自己的返回方法将其设为 leftButton 而不是 backButton。我希望 Apple 在未来能够让这一切变得更容易。

于 2012-08-08T09:17:05.227 回答