web-dev-qa-db-fra.com

Comment aligner UIBarButtonItem dans UIToolbar dans l'application universelle iOS?

Je souhaite placer deux instances de UIBarButtonItem dans UIToolbar dans mon application universelle iOS, sur laquelle le premier élément se trouve sur le bord gauche de la barre d'outils et le second au centre. Cependant, il semble que cela ne puisse pas être fait dans Interface Builder, car la mise en page automatique ne prend pas en charge les contraintes de forçage sur la classe UIBarButtonItem car il ne s'agit pas d'une sous-classe de UIView .

Notez que je ne veux pas mettre le premier sur le bord gauche et le second sur le bord droit - je dois mettre le deuxième bouton au centre . De plus, je n'ai pas de plan pour utiliser le troisième bouton afin de les aligner à gauche, au centre et à droite à intervalle égal.

Est-il encore possible d'ajouter une telle contrainte dans cette situation dans le storyboard? J'utilise Xcode 6 beta 5.

23
Blaszard

Vous pouvez tout faire dans votre Storyboard.

Sélectionnez un Bar Button Item Dans la bibliothèque d'objets et faites-le glisser dans votre Toolbar. Ajoutez un Flexible Space Bar Button Item À sa droite. Ajoutez votre deuxième Bar Button Item À sa droite. Ensuite, ajoutez un deuxième Flexible Space Bar Button Item À sa droite.

Le résultat ressemblera à ceci dans Interface Builder:

enter image description here

Si nécessaire, vous pouvez ajouter un Fixed Space Bar Button Item Supplémentaire sur le bord droit de votre Toolbar pour être sûr que votre deuxième Bar Button Item Est vraiment centré.

L'utilisateur lxt donne un autre exemple de cela en réponse à une question similaire ici .

Edit: Assurez-vous que votre UIToolbar a de bonnes contraintes avant de continuer!

74
Imanou Petit

vous pouvez le faire par programme

UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];

UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"item1" style:UIBarButtonItemStylePlain target:self action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"item2" style:UIBarButtonItemStylePlain target:self action:nil];
UIBarButtonItem *item3 = [[UIBarButtonItem alloc] initWithTitle:@"item3" style:UIBarButtonItemStylePlain target:self action:nil];

self.toolbarItems = [NSArray arrayWithObjects: item1, flexible, item2, flexible, item3, nil];

vérifiez ce lien si vous voulez plus de détails

Comment placer UIBarButtonItem sur le côté droit d'une UIToolbar?

6
Mohamad Chami

Je pense que vous devriez essayer l'élément d'espace du bouton de barre flexible et pour plus de compréhension, je partage un lien, alors regardez-le, cela pourrait vous aider

IToolbar et éléments de bouton de barre flexible/fixe

3
Arvind

Code pour ajouter la barre d'outils:

Ici, la largeur fixe peut être variable. En conséquence, vous pouvez le maintenir aussi loin que vous le souhaitez afin de garder le deuxième bouton au centre.

UIBarButtonItem *fixedItemSpaceWidth = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];

    fixedItemSpaceWidth.width = 200.0f; // or whatever you want

    UIBarButtonItem *doneBarButton  = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonAction:)];

            UIBarButtonItem *cancelBarButton  = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelButtonAction:)];

            // Initialise toolabr
            UIToolbar *toolbar          = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height-44, 320, 44)];
            //toolbar.barStyle = UIBarStyleBlack;
            toolbar.items               = [NSArray arrayWithObjects:cancelBarButton,fixedItemSpaceWidth,doneBarButton, nil];
        [self.view addSubview:toolbar];
2
Chetan