2010-09-22 6 views
5

Je voudrais placer des boutons à divers endroits (pas dans la barre de navigation), qui ont du texte dynamique. Je veux qu'ils ressemblent aux éléments de bouton de barre de navigation noire (avec le dégradé gris et noir).iOS bouton personnalisé similaire à barbutton

Comment pourrais-je les créer? Ils doivent avoir une largeur dynamique basée sur le texte du bouton. Je sais que je pourrais créer des fichiers PNG et les étirer, mais y a-t-il un meilleur moyen?

Répondre

5

Vous devrez créer le bouton vous-même en utilisant des images. Il suffit de créer une coutume UIButton et assigner des images appropriées pour les différents Etats bouton qui vous intéresse.

Vous pouvez utiliser « la méthode de stretchableImageWithLeftCapWidth pour créer une image extensible d'une image destinée à étirer et à utiliser NSString » UIImage méthode de sizeWithFont pour déterminer quelle taille le bouton devrait être.

http://developer.apple.com/library/ios/documentation/uikit/reference/UIImage_Class/Reference/Reference.html#//apple_ref/occ/instm/UIImage/stretchableImageWithLeftCapWidth:topCapHeight:

Quelque chose comme cela pourrait faire l'affaire:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

int capHeight = 31; 
int capWidth = 9; 
UIImage *buttonTemplate = [UIImage imageNamed:@"button_template.png"]; 
UIImage *stretchedButtonImage = [buttonTemplate stretchableImageWithLeftCapWidth:capWidth topCapHeight:capHeight]; 
[button setBackgroundImage:stretchedButtonImage forState:UIControlStateNormal]; 
+0

Grand. Cela m'a mis sur la bonne voie. Note aux autres: 'stretchableImageWithLeftCapWidth: topCapHeight:' a été déprécié dans iOS5. Utilisez 'resizableImageWithCapInsets:' à la place. (Comme indiqué à la page liée.) – PEZ

+0

Je veux ajouter à mon propre commentaire que si votre application supporte iOS <5 alors vous devriez vérifier si le sélecteur 'resizableImageWithCapInsets:' est là et sinon utiliser la méthode obsolète. – PEZ