navigationItem setRightBarButtonItems间距太宽

add*_*dzo 8 uinavigationcontroller uibarbuttonitem ios

在此输入图像描述

我正在尝试减少这两个条形按钮项之间的距离.

我正在使用

navigationItem setRightBarButtonItems
Run Code Online (Sandbox Code Playgroud)

设置两个按钮项目,但它们相距太远.

我试过添加负空间,我尝试在它之后添加一个垫片,固定空间,灵活空间.在文档中没有看到任何说明你无法改变间距但我找不到的方法.

我在这里先向您的帮助表示感谢.

编辑后编辑:

Siu Chung Chan的回答是完全正确的,但由于我一开始并没有得到它,我想我会分享让我意识到他完全正确的代码.

如果你把它全部放在一个区块中,这就是他(非常正确)的答案:

UIView *filterBtnView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
UIButton *filterBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
[filterBtn addTarget:self action:@selector(someMethod) forControlEvents:UIControlEventTouchUpInside];
[filterBtn setBackgroundImage:[UIImage imageNamed:@“someicon”] forState:UIControlStateNormal];
[filterBtnView addSubview:filterBtn];
UIBarButtonItem *btnFilter = [[UIBarButtonItem alloc] initWithCustomView:filterBtnView];

UIView *selectBtnView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
UIButton *selectBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
[selectBtn setBackgroundImage:[UIImage imageNamed:@“someothericon”] forState:UIControlStateNormal];
[selectBtn addTarget:self action:@selector(someOtherMethod:) forControlEvents:UIControlEventTouchUpInside];
[selectBtnView addSubview:selectBtn];
UIBarButtonItem *btnSelect = [[UIBarButtonItem alloc] initWithCustomView:selectBtnView];

[self.navigationItem setRightBarButtonItems:@[btnFilter, btnSelect] animated:YES];
Run Code Online (Sandbox Code Playgroud)

对我来说,这样做的好处在于它可以让人看到Apple实际设置的某些观点是如何偏向他们只想使用它们的.因此,如果您想要进行高度自定义的UI,您必须进行大量的UIView操作以绕过它们(可能)非预期的障碍.

故事的道德:如果视图没有正确排列,请尝试从UIView级别重新创建视图,然后将其添加到要显示它的视图中.

再次感谢Siu Chung Chan!

Siu*_*han 5

我以前做过。

您必须为按钮创建自己的UIView。导致默认的uibarbuttonitem在左侧和右侧有一些填充。

ViewIconBtn* searchViewIconBtn = [[ViewIconBtn alloc] initWithImage:[UIImage imageNamed:@"searchIcon.png"]];
[searchViewIconBtn.btn addTarget:self action:@selector(toSearch) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem* btnSearch = [[UIBarButtonItem alloc] initWithCustomView:searchViewIconBtn];

UIBarButtonItem *space15 = [NegativeSpacer negativeSpacerWithWidth:15];
    [self.navigationItem setRightBarButtonItems:[NSArray arrayWithObjects:space15,btnWishList,btnPost,btnSearch, nil]];
Run Code Online (Sandbox Code Playgroud)

btnWishList,btnPost,btnSearch都是ViewIconBtn类。在我的项目中,我在右侧创建了3个导航按钮。

UIBarButtonItem space15用于调整边界和最右边的barbutton之间的填充。