在导航栏项目之间创建空白?

时间:2014-03-05 23:18:38

标签: ios uinavigationbar uibarbuttonitem

我花了几个小时才试图把这个想法变为现实。我的最后一个选择是创建空白标签来创造空间,但我觉得他们的方式更清晰。

基本上我有三个按钮,我们试图在它们之间创造固定空间以保持整洁。每个按钮都以编程方式添加。

我找到了这段代码:

UIBarButtonItem *fixedItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
fixedItem.width = 20.0f; // or whatever you want

Source

但是如何将这段代码分配给某个按钮呢?

3 个答案:

答案 0 :(得分:8)

你可能会感到困惑。您不会将此代码分配给按钮。该代码创建了一个UIBarButtonSystemItemFixedSpace类型的按钮。那么,做你所链接的答案就行了。创建固定和&灵活的UIBarButtonItem(以及您拥有的其他按钮),然后在导航栏上设置它们。在这种情况下,它们会显示在导航栏的左上角区域(通过leftBarButtonItems):

// Create "Normal" buttons items:
UIBarButtonItem *button1 = [[UIBarButtonItem alloc] initWithTitle:@"1" style:UIBarButtonItemStylePlain target:Nil action:nil];
UIBarButtonItem *button2 = [[UIBarButtonItem alloc] initWithTitle:@"2" style:UIBarButtonItemStylePlain target:Nil action:nil];    
UIBarButtonItem *button3 = [[UIBarButtonItem alloc] initWithTitle:@"3" style:UIBarButtonItemStylePlain target:Nil action:nil];

// Create "Spacer" bar button items 
UIBarButtonItem *fixedItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
fixedItem.width = 20.0f; // or whatever you want
UIBarButtonItem *flexibleItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

self.navigationItem.leftBarButtonItems = @[button1, fixedItem, button2, flexibleItem, button3];

此外,如果您有工具栏,则可以使用工具栏的items属性:

self.toolbar.items = @[button1, fixedItem, button2, flexibleItem, button3];

答案 1 :(得分:4)

如果要在Interface Builder中执行此操作。 我试图拖动灵活或固定的空格键项,但它似乎不能在导航栏中工作。 解决方法:在条形按钮之间拖动UIView。在尺寸检查器中调整UIView的宽度,并将视图颜色和条形按钮项设置为清除颜色。

enter image description here

答案 2 :(得分:0)

您可以多次将此按钮添加到具有其他按钮的数组中。然后,您将该数组设置为rightBarButtonItems(或leftBarButtonItems)或视图控制器导航项。