alignmentUIToolBar项目

我有三个UIBarButtonItem创build如下。 他们左alignment,我想alignment中心,所以没有在右侧的差距。 我在UIToolBar不到alignment属性。 有没有另外一种方法来完成这个?

 //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]; 

将两个UIBarButtonSystemItemFlexibleSpace项目添加到您的项目的左侧和右侧的工具栏中

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

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

这也可以从故事板完成。

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

均匀分布的

中心

在Xamarin iOS中

右alignment:

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

中心alignment:

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

Swift版本:

  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]