标题变得太宽时调整UIBarButtonItem的大小

R4c*_*OOn 7 iphone

一些背景:我想要一个3个按钮UIToolBar.我设法让中间的一个居中,把所有东西都放进UIToolBarUIView.

除了中间按钮的标题太大之外,Everythings看起来就像它应该是它.然后它会显示在左或右按钮下.

当它们太大时,我无法获得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;
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*itz 8

在左右按钮和中央按钮之间放置一个灵活的空格键按钮项; 这将允许侧面按钮只占用他们需要的宽度,并保持中心按钮居中,同时允许它生长到它周围的空间.

这是Interface Builder的一些屏幕截图,显示了我今天早上工作的一些显示效果:双头箭头是IB显示灵活空间项目的方式......

Interface Builder屏幕截图显示了具有宽灵活空间的工具栏

...和中心按钮上的标题更长......

Interface Builder屏幕截图显示了具有窄空间的工具栏

这是我的iPhone 3GS上显示的带有短和长中心按钮的工具栏:

iPhone截图显示工具栏具有宽阔的灵活空间

iPhone截图显示工具栏具有狭窄的灵活空间