次のメソッドで左バー ボタン アイテムを作成します。
- (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;
}
ボタンに CGRectOffset を使用すると機能しないため、ビューにボタンを追加する必要があります。したがって、この場合、UIViewController の 1 つにある私のボタンが表示されます
だからそれは私が欲しいものです。しかし、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 は、最初のケースのように、左側からより多くの領域を表示する必要があります。ただし、ボタンだけでなく、すべてのサラウンドが2番目のケースのようにクリックするだけで動作する必要があります。私がしなければならないこと?
編集 最初のケースでは、次の領域をタップするとボタンがクリックされました
2番目のケースでは、次の領域をタップするとボタンがクリックされました
最初のケースのようにボタンの位置が必要ですが(左側からorigin.xが増えます)、2番目のケースのようにクリック可能な領域が必要です