在导航控制器中使自定义后退按钮的可点击区域变小

我已经使用下面的代码创建了一个自定义后退按钮,但可点击区域非常大,远远超出了图标本身。 有谁知道如何设置可点击区域,或使其与图像大小相同?

谢谢

UIImage *buttonImage = [UIImage imageNamed:@"prefs"]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setImage:buttonImage forState:UIControlStateNormal]; button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height); [button addTarget:self action: @selector(handleBackButton) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button]; self.navigationItem.leftBarButtonItem = customBarItem; 

可点击区域显示为红色。

可点击区域

谢谢!

如果要阻止按钮以外的其他单击,请将自定义按钮添加到UIView,然后将该视图设置为barbuttonItem的自定义视图

你的代码将变成这样:

 UIImage *buttonImage = [UIImage imageNamed:@"prefs"]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setImage:buttonImage forState:UIControlStateNormal]; button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height); [button addTarget:self action: @selector(handleBackButton) forControlEvents:UIControlEventTouchUpInside]; UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height)]; [view addSubview:button]; UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:view]; self.navigationItem.leftBarButtonItem = customBarItem; 

这应该适用于我。

@Prasad Devediga,swift版本非常有用:

  let btnName = UIButton() btnName.setImage(UIImage(named: "settings_filled_25"), forState: .Normal) btnName.frame = CGRectMake(0, 0, 30, 30) btnName.addTarget(self, action: Selector("toggleRight"), forControlEvents: .TouchUpInside) var rightView = UIView() rightView.frame = CGRectMake(0, 0, 30, 30) rightView.addSubview(btnName) let rightBarButton = UIBarButtonItem() rightBarButton.customView = rightView self.navigationItem.rightBarButtonItem = rightBarButton