2012-10-09 46 views
5

Tengo UIBarButtonItem en una UIToolbar en la parte superior de mi aplicación de iPad (iOS 5.1.) Tengo su ancho establecido en 65 en Interface Builder. Es de estilo 'bordeado' e identificador 'personalizado'. La etiqueta de texto y el tinte cambian cuando se presionan:Cómo evitar que UIBarButtonItem con atributos personalizados cambie de tamaño

[btnA setTitle:@"State A"]; 
    [btnA setTintColor:[UIColor STATE_A_COL]; 

Y así sucesivamente, tomando varias etiquetas y colores. Esto funcionó bien, el botón no cambió de tamaño a pesar de que los títulos para los distintos estados son bastante diferentes en longitud.

Luego añade este código para establecer la fuente, en el arranque:

UIFont * futura = [UIFont fontWithName:@"Futura" size:13]; 
NSDictionary *attributes = [NSDictionary dictionaryWithObject:futura 
                 forKey:UITextAttributeFont]; 
[btnA setTitleTextAttributes:attributes forState:UIControlStateNormal]; 

Ahora, el botón está dimensionado para ajustarse al ancho del título que tiene en el inicio. Cambia de tamaño a medida que cambian los títulos. ¿Cómo puedo bloquear el tamaño? No entiendo la interacción aquí; Pensé que todo lo que había hecho era cambiar el atributo de la fuente del título, no otra cosa sobre el botón.

También he intentado fijar explícitamente la propiedad width:

[btnA setWidth:65.0]; 

vez más en vano.

Respuesta

6

Obtuve el UIBarButtonItem para detener el cambio de tamaño utilizando la propiedad possibleTitles, para dar una pista sobre el ancho máximo deseado.

[btnA setPossibleTitles:[NSSet setWithObjects:@"State A', @"B", @"Final state", nil]]; 

Esto funcionó, pero no puedo establecer explícitamente el ancho al tamaño que quiero, así que estoy dejando la pregunta abierta.

+0

Tim, ¿qué tamaño quieres? – Carl

Cuestiones relacionadas