115 votes

Alignement des éléments de la UIToolBar

J'ai trois UIBarButtonItem créé comme ci-dessous. Ils sont alignés à gauche et j'aimerais les aligner au centre pour qu'il n'y ait pas de vide sur le 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];

262voto

nduplessis Points 7777

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 ajoutant ces éléments comme vous le feriez pour n'importe quel autre élément de la barre d'outils, l'espace sera réparti équitablement entre les deux.

25 votes

Il n'y a pas vraiment de raison de créer plusieurs espaces flexibles. Vous pouvez ajouter plusieurs fois le même objet espace flexible multiple à votre barre d'outils si vous en avez besoin de plusieurs.

0 votes

Mmc a raison. En fait, il serait probablement parfaitement raisonnable de créer un espace flexible singleton et de le réutiliser dans l'ensemble de votre produit. J'ai entendu dire que c'était la véritable utilisation originale des singletons : pas pour faire respecter les règles du programme, mais pour réduire l'overhead.

2 votes

Vous avez oublié de mettre à jour le nom de la version, qui devrait être [flexibleSpace release] ;

31voto

user229688 Points 1393

Cela peut aussi se faire directement à partir d'un storyboard.

Il suffit de faire glisser et de déposer des éléments dans la barre d'outils, et de transformer certains d'entre eux en espace flexible ou fixe pour obtenir l'effet souhaité. Voir les deux exemples ci-dessous.

Evenly spaced

Centered

9voto

rgamber Points 888

Version Swift :

    let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: viewController.view.frame.size.width, height: 35.0))
    let flexibleSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: viewController, action: nil)
    let button1 = UIBarButtonItem(title: "A", style: UIBarButtonItem.Style.Plain, target: viewController, action: foo)
    let button2 = UIBarButtonItem(title: "B", style: UIBarButtonItem.Style.Plain, target: viewController, action: bar)
    let button3 = UIBarButtonItem(title: "C", style: UIBarButtonItem.Style.Plain, target: viewController, action: blah)
    toolbar.items = [button1, flexibleSpace, button2, flexibleSpace, button3]

9voto

Herman Schoenfeld Points 1480

Dans Xamarin iOS

Aligné à droite :

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

Aligné au centre :

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

7 votes

Ce n'est pas le sujet. Nous parlons ici d'iOS pur.

4 votes

C'est ce que vise MonoTouch.

2 votes

Question sur Objective C et non sur MonoTouch/C#

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X