Измените размер UIBarButtonItem, когда заголовок становится слишком широким

Немного предыстории: я хотел иметь 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;
}
7
задан cduck 24 June 2011 в 23:38
поделиться