2010-09-22 2 views
5

Vorrei mettere i pulsanti in vari punti (non nella barra di navigazione), che hanno testo dinamico. Voglio che sembrino simili agli elementi del pulsante della barra di navigazione nera (con il gradiente grigio e nero).Pulsante personalizzato iOS simile a barbutton

Come dovrei fare per creare questi? Devono essere di larghezza dinamica in base al testo del pulsante. So che potrei creare file PNG e allungarli, ma c'è un modo migliore?

risposta

5

È necessario creare il pulsante manualmente utilizzando le immagini. È sufficiente creare un costume UIButton e assegnare immagini appropriate per il pulsante di vari stati che ti interessa.

È possibile utilizzare UIImage 's stretchableImageWithLeftCapWidth metodo per creare un'immagine estensibile da un'immagine progettato per allungare e utilizzare NSString' s sizeWithFont metodo per determinare quali dimensioni dovrebbe essere il pulsante.

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

Qualcosa di simile potrebbe fare il trucco:

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

Grande. Questo mi ha messo sulla strada giusta. Nota agli altri: 'stretchableImageWithLeftCapWidth: topCapHeight:' è stato deprecato in iOS5. Usa 'resizableImageWithCapInsets:' al suo posto. (Come notato nella pagina collegata.) – PEZ

+0

Voglio aggiungere al mio commento che se la tua app supporta iOS <5 allora dovresti controllare se il selettore 'resizableImageWithCapInsets:' è lì e altrimenti usa il metodo deprecato. – PEZ