2

以下のコードでカスタムの戻るボタンを作成しましたが、クリック可能な領域は非常に大きく、アイコン自体をはるかに超えています。クリック可能な領域を設定する方法、または画像と同じサイズにする方法を知っている人はいますか?

ありがとう

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;

クリック可能な領域は赤で表示されます。

クリッカブルエリア

ありがとう!

4

2 に答える 2

6

ボタン以外のクリックを防ぎたい場合は、カスタム ボタンを 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;

これは私にとってはうまくいくはずです。

于 2013-05-15T04:46:16.677 に答える
0

@Prasad Devediga、迅速なバージョンは大きく機能します:

        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
于 2015-11-19T14:40:40.720 に答える