我正在尝试使用自定义图像为我的导航栏创建一个按钮。当我运行以下代码时,按钮会按原样出现,除了你可以在它后面看到另一个更宽的按钮,伸出两侧。如何摆脱其他按钮?
UIBarButtonItem *emailButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"emailBut"]
style:UIBarButtonSystemItemCompose
target:self
action:@selector(emailSheet)];
self.navigationItem.rightBarButtonItem = emailButton;
答案 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将来能够更轻松。