2016-05-06 11 views
2

ナビゲーションコントローラ内のUIBarButtonItemの選択領域を変更しようとしています。基本的には、許容範囲を変更して、UIBarButtonItemを選択可能にしようとしています。今、私のUIBarButtonItemのサイズは40x40ですが、私の指がボタンに全く触れていなくても簡単に選択できます。ここでUIBarButtonItemの選択領域を変更するには?

は、私が何を意味するか説明するためにです:

enter image description here

緑がUIBarButtonItemの大きさを表しています。赤は許容範囲を表し、UIBarButtonItemを選択可能にします。

赤い領域の幅を変更するにはどうすればよいですか?

はここで役に立つ場合、コードの抜粋です:

changeMuscleMap = UIButton(frame: CGRect(x: 0, y: 0, width: 40, height: 40)) 
changeMuscleMap.setImage(UIImage(named: "change"), forState: .Normal) 
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: changeMuscleMap) 

ありがとう!

答えて

-3

私はここに@Damien Romitoの提供答えを使って、望んでいたものを達成することができました:

スウィフト3.0用に更新

UINavigationBar UIBarButtonItems much larger click area than required

let buttonContainer: UIView = UIView(frame: CGRect(x: 0, y: 0, width: 27, height: 30)) 

let barButton: UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 30)) 

buttonContainer.addSubview(barButton) 

barButton = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) 

barButton(#imageLiteral(resourceName: "image"), for: UIControlState.normal) 

self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: buttonContainer) 

barButton(self, action: #selector(ViewController.doSomething), for: UIControlEvents.touchUpInside) 
-1

UIButtonの代わりにUIImageViewというカスタムアイテムを使用してUIBarButtonItemにすることで実現できます。以下のコードを試してみてください。これで今解決することを願っています。

changeMuscleMap = UIImageView(image:UIImage(named: "change")) 
imageView.frame = CGRectMake(0, 0, 40, 40) 
let leftBarBtn = UIBarButtonItem(customView: imageView) 
self.navigationItem.leftBarButtonItem = leftBarBtn 
+1

あなたは回避策ではなく、解決策を示唆している、そしてそれは私には無関係です問題に関係なく – Pangu

+0

ご迷惑をおかけして申し訳ありません。私は今問題を解決するために私の答えを編集しました。私はこれが役立つことを願っています –

0

次を使用することができますUIBarButtonItemボタンの幅を増減するコード。あなたが必要以上に大きくクリック領域をしたい場合は、カスタムボタンでUIBarButtonItemを作り、以下のコードを試してみてください

changeMuscleMap = UIButton(frame: CGRect(x: 0, y: 0, width: 120, height: 40)) 
changeMuscleMap.setImage(UIImage(named: "change"), forState: .Normal) 
changeMuscleMap.contentHorizontalAlignment = .left 
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: changeMuscleMap) 
0

@implementation CustomButton 

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event 
{ 
    UIEdgeInsets extendTouchInsets = UIEdgeInsetsMake(20, 0, 20, 0); 
    CGRect bounds = self.bounds; 
    bounds.origin.x -= extendTouchInsets.left; 
    bounds.origin.y -= extendTouchInsets.top; 
    bounds.size.width += extendTouchInsets.left + extendTouchInsets.right; 
    bounds.size.height += extendTouchInsets.top + extendTouchInsets.bottom; 
    return CGRectContainsPoint(bounds, point); 
} 

@end 
関連する問題