2009-03-02 13 views
101

Ich habe drei UIBarButtonItem erstellt wie folgt. Sie richten sich nach links aus und ich möchte den Mittelpunkt ausrichten, so dass auf der rechten Seite keine Lücke ist. Ich sehe keine Ausrichtung Eigenschaft auf UIToolBar. Gibt es einen anderen Weg, dies zu erreichen?Ausrichtung UIToolBar Artikel

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

Antwort

244

In zwei UIBarButtonSystemItemFlexibleSpace Elemente Ihrer Symbolleiste, nach links und rechts Ihrer Artikel

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

diese, wie Sie alle anderen Elemente der Symbolleiste Raum zwischen den beiden von ihnen gleichmäßig verteilen würde hinzufügen.

+24

Es gibt keinen wirklichen Grund, mehrere flexible Räume zu machen. Sie können Ihrer Symbolleiste mehrfach dasselbe flexible flexible Objekt hinzufügen, wenn Sie mehrere benötigen. – mmc

+0

mmc ist korrekt. In der Tat wäre es wahrscheinlich völlig in Ordnung, ein Singleton flexibleSpace zu machen und es in Ihrem gesamten Produkt wiederzuverwenden. Ich habe gehört, dass dies der wahre ursprüngliche Gebrauch von Singletons war: nicht, um Programmregeln durchzusetzen, sondern um den Overhead zu reduzieren. – Amagrammer

+0

Aktualisierte den Code, um eine Instanz des flexiblen Speicherplatzes zu verwenden – nduplessis

6

In Xamarin iOS

Recht ausgerichtet:

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

Zentrum Aligned:

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

Dies ist nicht das Thema. Wir sprechen hier über reines iOS. – jturolla

+4

Was ist MonoTouch? –

+2

Objective C Frage nicht MonoTouch/C# –

25

Dies kann auch direkt aus dem Storyboard erfolgen.

Ziehen Sie einfach Elemente in die Symbolleiste, und drehen Sie sie in flexiblen oder festen Abstand, um den gewünschten Effekt zu erzielen. Siehe die beiden folgenden Beispiele.

Evenly spaced

Centered

+0

Ich verwende ein Storyboard, um meine Benutzeroberfläche zu verwalten. – AechoLiu

2

Swift Version:

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]