web-dev-qa-db-fra.com

Alignement des éléments UIToolBar

J'ai trois UIBarButtonItem créés comme ci-dessous. Ils s'alignent à gauche et j'aimerais aligner le centre pour qu'il n'y ait pas d'espace sur le côté droit. Je ne vois pas de propriété align sur UIToolBar. Existe-t-il un autre moyen d'y parvenir?

//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];
110
4thSpace

Ajoutez deux éléments UIBarButtonSystemItemFlexibleSpace à votre barre d'outils, à gauche et à droite de vos éléments

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

En les ajoutant comme vous le feriez pour tout autre élément de la barre d'outils, l'espace sera réparti également entre les deux.

257
nduplessis

Cela peut également être fait directement à partir d'un storyboard.

Faites simplement glisser et déposez les éléments dans la barre d'outils et transformez certains d'entre eux en espace flexible ou fixe pour obtenir l'effet souhaité. Voir les deux exemples ci-dessous.

Evenly spaced

Centered

28
Nycen

Dans Xamarin iOS

Aligné à droite:

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

Centre aligné:

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

version 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]
5
rgamber