Question

J'ai trois UIBarButtonItem créés comme ci-dessous. Ils s'alignent à gauche et j'aimerais centrer au centre pour qu'il n'y ait pas d'espace vide du côté droit. Je ne vois pas de propriété align sur UIToolBar . Y a-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];
Était-ce utile?

La solution

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 n'importe quel autre élément de la barre d’outils, l’espace sera réparti uniformément entre les deux.

Autres conseils

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

Il suffit de glisser-déposer des éléments dans la barre d’outils et de transformer certains d’entre eux en espaces flexibles ou fixes pour obtenir l’effet souhaité. Voir les deux exemples ci-dessous.

Espacés de manière égale

Centré

Sous 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);

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]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top