2010-05-07 24 views
21

Le positionnement horizontal de UIBarButtonItems ne pose aucun problème, je peux simplement remplir l'espace avec des espaces fixes/flexibles. Cependant, je n'arrive pas à ajuster l'élément de la barre d'outils verticalement. UIToolbar n'a pas de propriété d'alignement et UIBarButtonItem n'a aucun moyen de définir son cadre.Comment ajuster le cadre ou l'alignement vertical d'un UIBarButtonItem contenu par une instance UIToolbar?

Je dois le faire car nous utilisons un mélange d'icônes personnalisées créées à l'aide de initWithImage et d'icônes standard créées avec initWithBarButtonSystemItem. Les icônes personnalisées ne sont pas centrées correctement (elles sont décalées vers le haut, par rapport aux icônes du système, qui sont centrées correctement), de sorte que la barre d'outils semble étrange.

+2

Je vous recommande soit 1) d'utiliser quelque chose de personnalisé et non une barre d'outils; ou 2) corriger les images car elles seront beaucoup plus faciles à ajuster correctement. –

+0

1 n'est pas une option pour moi. Je n'arrive pas à prendre des décisions de conception visuelle. Je ne peux pas décider de l'apparence de l'interface utilisateur, des effets sur les boutons ou de leur emplacement. 2 est quelque chose que je préfèrerais éviter si possible, car cela signifie renvoyer le travail au concepteur visuel. Il est fastidieux de passer à plusieurs reprises les images d'avant en arrière, de les modifier et d'examiner ensuite les résultats par essais et erreurs. Il n'y a également aucune garantie que cela réglera le problème ... Même si nous redimensionnons l'icône, UIKit pourrait tout de même décaler le problème. D'autres recommandations? – akaii

+1

Des idées sur la façon de le faire pour le texte? La solution imageinsets ne fonctionne pas pour le texte. – easythrees

Répondre

1

Ne semble pas être une façon simple et propre de le faire, alors je suis allé avec un hack laid mais fonctionnel: imbriquer. J'ai collé un autre UIToolbar contenant le bouton dans un UIView que j'ai défini comme un UIBarButtonItem sur la barre d'outils d'origine en utilisant initWithCustomView. Le deuxième UIToolbar peut se déplacer librement dans l'UIView, et l'icône réelle conserve toutes les propriétés d'un UIBarButtonItem.

Pouce.

3

Propriété imageInsets de UIBarItem?

34

Oui, imageInsets a bien fonctionné pour moi!

float topInset = 4.0f; 
myUIBarButton.imageInsets = UIEdgeInsetsMake(topInset, 0.0f, -topInset, 0.0f); 

déplace l'image de 4 pixels vers le bas.

éviter ceci:

float topInset = 4.0f; 
myUIBarButton.imageInsets = UIEdgeInsetsMake(topInset, 0.0f, 0.0f, 0.0f); 

déplace l'image 4 pixels vers le bas (MAIS redimensionne la hauteur de l'image de sorte qu'il semble comprimé).

+0

Content de voir que je ne suis pas le seul à avoir ce problème. Bien que "topInset = 2.0f" a fonctionné pour moi. –

+0

merci vraiment vous avez sauvé mon temps –