Algunos antecedentes: quería tener 3 botones en un UIToolBar
. Logré que el central estuviera centrado y todo poniéndolo en un UIToolBar
en sí mismo en un UIView
.Cambiar el tamaño de un UIBarButtonItem cuando el título es demasiado ancho
Everythings se ve como debería, aparte de cuando el título de los botones del medio se vuelve demasiado grande. Luego se muestra debajo de los botones izquierdo o derecho.
No puedo obtener el UIToolBar
o el ancho UIBarButtonItems
para poder cambiar el tamaño de ellos cuando son demasiado grandes. El 'UIBarButtonItem' tiene una muy buena propiedad width
que me permitiría cambiar el tamaño del control si es demasiado grande. ¡Pero no puedo saber cuándo es demasiado grande!
EDITAR: Hice el camino difícil al final. Calculo el tamaño del texto y lo comparo con el tamaño máximo de píxel que vi en el dispositivo. Feo, pero funciona.
+ (CGFloat)calculateTextWidth:(NSString *)text
{
CGSize fullSize = [UIScreen mainScreen].applicationFrame.size;
UIGraphicsBeginImageContext(fullSize);
CGContextRef context = UIGraphicsGetCurrentContext();
// calculate the text size
CGContextSelectFont(context, "Helvetica", 17, kCGEncodingMacRoman);
CGContextSetTextMatrix(context, CGAffineTransformMakeScale(1.0, -1.0));
CGContextSetTextDrawingMode(context, kCGTextInvisible);
// measure the text
CGPoint initialTextPosition = CGContextGetTextPosition(context);
CGContextShowTextAtPoint(context, 0, 0, [text cStringUsingEncoding:NSASCIIStringEncoding], text.length);
CGPoint finalTextPosition = CGContextGetTextPosition(context);
return finalTextPosition.x - initialTextPosition.x;
}
si se establece la anchura UIBarButtonItem a 0,0, se ajusta su anchura de forma automática, por lo que hay no es necesario calcular el ancho Especialmente útil cuando se utilizan cadenas localizadas, que siempre tienen diferentes tamaños. –