【问题标题】:Make custom back button's clickable area smaller in Navigation controller在导航控制器中使自定义后退按钮的可点击区域更小
【发布时间】:2013-05-09 08:43:32
【问题描述】:

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

谢谢

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;

可点击区域显示为红色。

谢谢!

【问题讨论】:

标签: iphone ios uinavigationcontroller uinavigationbar uinavigationitem


【解决方案1】:

如果您想阻止按钮以外的点击,请将自定义按钮添加到 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;

这应该对我有用。

【讨论】:

    【解决方案2】:

    @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
    

    【讨论】:

      猜你喜欢
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 2011-11-29
      相关资源
      最近更新 更多