Einige Hintergrundinformationen: Ich wollte 3 Tasten auf einem UIToolBar
haben. Ich schaffte es, den mittleren zu zentrieren und alles in eine UIToolBar
selbst in eine UIView
zu bringen.Ändern Sie die Größe eines UIBarButtonItem, wenn der Titel zu breit wird
Everythings sieht genauso aus, wie es sollte, wenn der Titel der mittleren Tasten zu groß wird. Es wird dann unter den linken oder rechten Tasten angezeigt.
Ich kann nicht die UIToolBar
oder die UIBarButtonItems
's Breite erhalten, um die Größe ändern zu können, wenn sie zu groß sind. Das 'UIBarButtonItem' hat eine wirklich nette width
Eigenschaft, die es mir erlauben würde, die Größe des Steuerelements zu ändern, wenn es zu groß ist. Aber ich kann nicht wissen, wann es zu groß ist!
EDIT: Ich habe den harten Weg am Ende getan. Ich berechne die Größe des Textes und vergleiche sie mit der maximalen Pixelgröße, die ich auf dem Gerät sah. Hässlich, aber es funktioniert.
+ (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;
}
wenn Sie UIBarButtonItem Breite auf 0,0 eingestellt, passt es seine Breite automatisch, so dass es Es ist nicht notwendig, die Breite zu berechnen. Besonders nützlich bei lokalisierten Strings, die immer unterschiedliche Größe haben. –