2010-05-02 19 views
3

Je dois créer un UIToolbar qui a deux UIBarButtonItems. Le 1er bouton doit être centré et le 2ème élément doit être aligné à droite. Je comprends et j'utilise l'espacement flexible et cela fonctionne très bien quand j'ai besoin d'équilibrer les boutons à travers l'UIToolbar, mais avec seulement deux boutons, je n'arrive pas à centrer parfaitement le bouton du milieu. J'ai même initialisés le tableau view.toolbarItems avecUIToolbar UIBarButtonItem Alignement question

NSArray *items = [[NSArray alloc] initWithObjects:fixed, flex, center_button, flex, right_button, nil]; 

et mettre fixed.width = right_button.width ... mais encore, le center_button est jamais parfaitement centrée.

+0

Veuillez toujours marquer avec la boîte à outils, afin que les personnes puissent masquer les questions qui ne leur sont pas adressées par des balises. – doublep

Répondre

9

J'ai eu le même problème récemment et l'ai résolu en créant une sorte de faux UIBarButtonItem. La clé pour obtenir le droit d'alignement était de définir la propriété possibleTitles des deux boutons de la barre à gauche et à droite à la même valeur, par exemple:

[right_button setPossibleTitles:[NSSet setWithObject:@"Abc"]]; 

// Create this fake (plain) button item on the left, to correct the alignment. 
UIBarButtonItem *fake = [[[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease]; 
[fake setEnabled:NO]; 
[fake setPossibleTitles:right_button.possibleTitles]; 

// The array for your toolbar items 
NSArray *items = [[NSArray alloc] initWithObjects:fake, flex, center_button, flex, right_button, nil]; 

réponse tardive ... J'espère que cela peut encore aider.

+0

Je ne peux pas tester cela maintenant - mais bonne capture! Je vais essayer dès que j'ai une chance. –

+0

Merci! L'utilisation des titres possibles me permet de centrer mon bouton de jeu central dans un groupe de trois boutons. Je viens de mettre les boutons extérieurs au même titre possible. –

0

Il semble que votre barre d'outils ne soit pas sur toute la largeur de l'écran, ou votre centre_button n'est pas centré dans son cadre. Avez-vous essayé le réglage center_button.imageInsets?

+0

En effet, l'UIToolbar fait partie d'un UINavigationController et s'étire sur l'écran. Le bouton central peut être l'un des éléments UIBarButtonSystem qui fonctionne très bien si j'ai item, flex, item, flex, item. Le problème se manifeste seulement quand je veux un endroit vide dans le coin extrême gauche. –

1

Le problème est que la propriété width d'un UIBarButtonItem semble toujours être zéro. (Je pense que c'est parce que zéro est utilisé comme un drapeau par le système pour en faire la largeur "appropriée." Un espace flexible est la même manière.) Ce que vous pourriez avoir à faire est d'utiliser une image dans votre bouton droit (que façon, vous savez ce que sa largeur sera), et remplacez votre espace fixe avec un "bouton gauche" qui utilise une image transparente de la même taille que le bouton droit.