对齐UIToolBar项目


112

UIBarButtonItem创建了三个如下。它们向左对齐,我想对齐中心,因此右侧没有间隙。我看不到的align属性UIToolBar。还有另一种方法可以做到这一点吗?

//create some buttons
UIBarButtonItem *aboutButton = [[UIBarButtonItem alloc] initWithTitle:@"About" style:UIBarButtonItemStyleBordered target:self action:@selector(showAbout:)];
[toolbar setItems:[NSArray arrayWithObjects:settingsButton,deleteButton,aboutButton,nil]];
//Add the toolbar as a subview to the navigation controller.
[self.navigationController.view addSubview:toolbar];

Answers:


259

将两个UIBarButtonSystemItemFlexibleSpace项目添加到工具栏,分别在项目的左侧和右侧

UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[toolbar setItems:[NSArray arrayWithObjects:flexibleSpace, settingsButton,deleteButton,aboutButton, flexibleSpace, nil]];

像添加其他任何工具栏项一样添加这些项将在它们两个之间平均分配空间。


25
没有真正的理由要创建多个灵活的空间。如果您需要多个弹性空间对象,可以多次将其添加到工具栏。
mmc

mmc是正确的。实际上,制作一个singleton flexibleSpace并将其在整个产品中重复使用可能是完全合理的。我听说它声称这是单例的真正原始用法:不执行程序规则,而是减少开销。
Amagrammer

2
您忘记更新发布呼叫,应阅读[flexibleSpace release];
Daniel Hepper 09年

是的,很抱歉,它显示为[flexibleSpaceLeft版本],而不是[flexibleSpace版本]。错字固定
nduplessis,2009年

30

也可以从情节提要中直接完成此操作。

只需将项目拖放到工具栏中,然后将其中的一些项目转换为灵活或固定的空间即可获得所需的效果。请参阅下面的两个示例。

均匀分布的

居中


8

在Xamarin iOS中

右对齐:

yourBar.SetItems(new [] { new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), yourButton }, false);

居中对齐:

var flexibleSpace = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
yourBar.SetItems(new [] { flexibleSpace, yourButton, flexibleSpace}, false);

5
这不是主题。我们在这里谈论纯iOS。
jturolla

4
MonoTouch的目标是哪个。
Herman Schoenfeld 2013年

2
目标C问题而不是MonoTouch / C#
Max MacLeod

6
@MaxMacLeod:它没有被标记为obj-c,它被标记为iPhone。因此,我的回答是有效的。比较c#与obj-c也很好。显然,c#在任何方面都是现代,更苗条,更漂亮,更快,更出色的。
赫尔曼·舍恩菲尔德

12
虽然很明显问题中的代码是Objective-C,但我发现此答案很有帮助。在Google中,这也是一个很高的问题。
jacob.toye

7

迅捷版:

    let toolbar = UIToolbar(frame: CGRectMake(0, 0, viewController.view.frame.size.width, 35.0))
    let flexibleSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: viewController, action: nil)
    let button1 = UIBarButtonItem(title: "A", style: UIBarButtonItemStyle.Plain, target: viewController, action: foo)
    let button2 = UIBarButtonItem(title: "B", style: UIBarButtonItemStyle.Plain, target: viewController, action: bar)
    let button3 = UIBarButtonItem(title: "C", style: UIBarButtonItemStyle.Plain, target: viewController, action: blah)
    toolbar.items = [button1, flexibleSpace, button2, flexibleSpace, button3]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.