iOS-UINavigatioItem

时间:2018-07-13 05:24:49

标签: ios iphone uinavigationcontroller uinavigationbar uinavigationitem

我正在以编程方式在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];

哪个可以产生正确的结果,但是有一个问题,即在波顿和屏幕角之间的空间很小,这是我所不希望的。

1st image

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

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

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

Image 2

现在我被困在这里。 请让我知道是否还有其他方法可以更改条形按钮项目的边角空间。 我必须坚持NavigationItem。

1 个答案:

答案 0 :(得分:0)

只需尝试根据您的期望将右边缘插图设置为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