我用下一个方法创建左栏按钮项:
- (void)leftButtonOnNavigationItem:(NSString *)imageName type:(NSInteger)type
{
UIImage *backImg = [UIImage imageNamed:imageName];
UIButton *backBtn = [[UIButton alloc] initWithFrame:CGRectMake(0.f, 0.f, backImg.size.width, backImg.size.height)];
if (type == 0)
[backBtn addTarget:self.navigationController action:@selector(pop) forControlEvents:UIControlEventTouchUpInside];
else
[backBtn addTarget:self action:@selector(leftMake) forControlEvents:UIControlEventTouchUpInside];
backBtn.contentMode = UIViewContentModeCenter;
[backBtn setImage:backImg forState:UIControlStateNormal];
UIView *backBtnView = [[UIView alloc] initWithFrame:backBtn.bounds];
backBtnView.bounds = CGRectOffset(backBtnView.bounds, -6, 0);
[backBtnView addSubview:backBtn];
UIBarButtonItem *backBarBtn = [[UIBarButtonItem alloc] initWithCustomView:backBtnView];
self.navigationItem.leftBarButtonItem = backBarBtn;
}
我需要在 View 上添加按钮,因为当我使用 CGRectOffset 作为按钮时,它不起作用。因此,在这种情况下,我在一个 od 上的按钮显示了 UIViewController
所以这就是我想要的。但是 UIBarButton 开始只点击 UIBarButton (矩形区域)。但是,当我在 UIBarButtonItem 中仅添加按钮时,即使我单击了您可以在屏幕上看到的 UINavigationBar 区域,它也可以工作。
我添加这样的按钮:
- (void)leftButtonOnNavigationItem:(NSString *)imageName type:(NSInteger)type
{
UIImage *backImg = [UIImage imageNamed:imageName];
UIButton *backBtn = [[UIButton alloc] initWithFrame:CGRectMake(0.f, 0.f, backImg.size.width, backImg.size.height)];
if (type == 0)
[backBtn addTarget:self.navigationController action:@selector(pop) forControlEvents:UIControlEventTouchUpInside];
else
[backBtn addTarget:self action:@selector(leftMake) forControlEvents:UIControlEventTouchUpInside];
backBtn.contentMode = UIViewContentModeCenter;
[backBtn setImage:backImg forState:UIControlStateNormal];
// UIView *backBtnView = [[UIView alloc] initWithFrame:backBtn.bounds];
// backBtnView.bounds = CGRectOffset(backBtnView.bounds, -6, 0);
// [backBtnView addSubview:backBtn];
UIBarButtonItem *backBarBtn = [[UIBarButtonItem alloc] initWithCustomView:backBtn];//View];
self.navigationItem.leftBarButtonItem = backBarBtn;
}
现在我的按钮显示如下
所以 CGRectOffset 不起作用,我的 UIBarButton 非常靠近屏幕的左侧,但是通过点击导航栏上的所有区域,它可以正常工作,你在屏幕上看到。所以我可以触摸导航栏上的所有区域,UIBarButton 可以正常工作
所以我需要: UIBarButton 必须像第一种情况一样显示,左侧有更多区域。但它必须通过单击不仅按钮而且所有环绕区域都像在第二种情况下一样工作。我应该做什么?
编辑 在第一种情况下,如果我点击下一个区域,则单击按钮
如果我点击下一个区域,则在第二种情况下单击按钮
我需要第一种情况下的按钮位置(左侧更多origin.x),但第二种情况下的可点击区域