【问题标题】:iOS - BarButtonItem Corner spacing in UINavigatioItemiOS - 导航项中的 UIBarButtonItem 角间距
【发布时间】:2018-12-21 10:09:28
【问题描述】:

我正在以编程方式在 UINavigationItem 中创建 RightBarButtonItem。 使用这个简单的代码

UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[backButton setImage:[UIImage imageNamed:@"concate_back_icon.png"] forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(backButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];

产生正确的结果,但有一个问题,底部和屏幕角之间的空间很小,我不想要。

为此,我在按钮图像中添加间距,使用边缘插图

[backButton setImageEdgeInsets:UIEdgeInsetsMake(0, -10, 0,10)];

这给我带来了良好的视觉效果,但可点击区域保持不变,因此用户大部分时间都错过了点击。

现在我被困在这里了。 请让我知道是否有另一种方法可以更改条形按钮项目的角空间。 我必须坚持使用 navigationItem。

【问题讨论】:

    标签: ios iphone uinavigationcontroller uinavigationbar uinavigationitem


    【解决方案1】:

    只需尝试根据您的期望将右边缘插图设置为 barbutton。这个对我有用。如果您遇到问题,请告诉我。谢谢。

    let rightBarButton = UIButton(type: .custom)
    rightBarButton.setImage(UIImage.init(named: "Settings"), for: .normal)
    rightBarButton.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
    rightBarButton.addTarget(self, action: #selector(someAction), for: .touchUpInside)
    rightBarButton.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: -30.0) // Right edge insets
    let rightBar = UIBarButtonItem(customView: rightBarButton)
    self.navigationItem.rightBarButtonItem  = rightBar
    

    【讨论】:

    • 它的结果与 SetImageEdgeInsets 相同。图像有一个偏移量,但没有按钮。因此,如果我单击有图像但没有按钮的区域,则不会调用按钮选择器。我希望你能理解这个问题。
    猜你喜欢
    • 2018-01-14
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多