2010-09-22 16 views
5

Me gustaría colocar botones en varios lugares (no en la barra de navegación), que tienen texto dinámico. Quiero que se vean de manera similar a los elementos del botón de la barra de navegación negra (con el degradado gris y negro).iOS botón personalizado similar a barbutton

¿Cómo podría crear estos? Deben tener un ancho dinámico basado en el texto del botón. Sé que podría crear archivos png y estirarlos, pero ¿hay una mejor manera?

Respuesta

5

Tendrá que crear el botón usted mismo usando imágenes. Basta con crear una costumbre UIButton y asignar imágenes apropiadas para el botón de varios estados que le interesa.

Puede utilizar UIImage 's stretchableImageWithLeftCapWidth método para crear una imagen estirable de una imagen diseñada para estirar y utilizar NSString' s sizeWithFont método para determinar qué tamaño debe tener el botón.

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

Algo como esto puede hacer el truco:

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. Esto me puso en el camino correcto. Nota para otros: 'stretchableImageWithLeftCapWidth: topCapHeight:' ha quedado obsoleto en iOS5. Use 'resizableImageWithCapInsets:' en su lugar. (Como se indica en la página vinculada.) – PEZ

+0

Quiero agregar a mi propio comentario que si su aplicación es compatible con iOS <5, entonces debe verificar si el selector 'resizeImageWithCapInsets:' está allí y de lo contrario utilizar el método en desuso. – PEZ

Cuestiones relacionadas