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.
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:
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!
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?
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
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];