Alcuni background: volevo avere 3 pulsanti su un UIToolBar
. Sono riuscito a ottenere quello centrale centrato e tutto mettendolo in uno UIToolBar
stesso in un UIView
.Ridimensionare un UIBarButtonItem quando il titolo diventa troppo largo
Tutto sembra proprio come dovrebbe a prescindere da quando il titolo dei pulsanti centrali diventa troppo grande. Viene quindi visualizzato sotto i pulsanti sinistro o destro.
Non riesco a ottenere la larghezza dello UIToolBar
o dello UIBarButtonItems
per poterle ridimensionare quando sono troppo grandi. L''UIBarButtonItem' ha una proprietà veramente bella width
che mi permetterebbe di ridimensionare il controllo se è troppo grande. Ma non posso sapere quando è troppo grande!
EDIT: Ho fatto la strada dura alla fine. Calcolo la dimensione del testo e lo confronta con la dimensione massima dei pixel che ho visto sul dispositivo. Brutto ma funziona.
+ (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;
}
se si imposta la larghezza UIBarButtonItem a 0.0, regola la sua larghezza automaticamente, quindi non non è necessario calcolare la larghezza. Particolarmente utile quando si utilizzano stringhe localizzate, che hanno sempre dimensioni diverse. –