Немного предыстории: я хотел иметь 3 кнопки на UIToolBar
. Мне удалось центрировать средний и все остальное, поместив его в UIToolBar
в UIView
.
Все выглядит так, как должно, за исключением случаев, когда заголовок средних кнопок становится слишком большим. Затем он отображается под левой или правой кнопками.
Я не могу получить ширину UIToolBar
или UIBarButtonItems
, чтобы изменить их размер, когда они слишком большой.
'UIBarButtonItem' имеет действительно хорошее свойство width
, которое позволяет мне изменять размер элемента управления, если он слишком велик.
Но я не могу знать, когда он слишком велик!
РЕДАКТИРОВАТЬ: В конце концов, я проделал трудный путь. Я вычисляю размер текста и сравниваю его с максимальным размером пикселя, который я считал подходящим для устройства. Уродливо, но это работает.
+ (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;
}