2010-11-18 1 views
7

背景:UIToolBarには3つのボタンがあります。私は中心にあるものを全てUIToolBarに入れてUIViewにすることですべてを集中させました。タイトルが広すぎる場合は、UIBarButtonItemのサイズを変更してください。

途中のボタンのタイトルが大きくなり過ぎると、それは離れているように見えます。 その後、左または右のボタンの下に表示されます。

大きすぎるとサイズを変更できるように、UIToolBarまたはUIBarButtonItemsの幅を取得できません。 'UIBarButtonItem'には本当に素晴らしいwidthプロパティがあり、大きすぎるとコントロールのサイズを変更できます。 しかし、大きすぎるときはわかりません!

EDIT:私は最後に苦労しました。私はテキストのサイズを計算し、それを私がデバイスにフィットすると見た最大ピクセルサイズと比較します。醜いが、それは動作します。

+ (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; 
} 

答えて

8

左右のボタンと中央ボタンの間にフレキシブルスペースバーボタンアイテムを配置します。サイドボタンが必要なだけの幅を占めるようにし、センターボタンを中心にしたままにして、その周りのスペースに成長させることができます。

ここで効果を示し、私は今朝に取り組んでいた何かのInterface Builderのからのスクリーンショットのカップルがあります:双頭矢印は、柔軟なスペース項目を示すのIBの方法です...

Interface Builder screenshot showing toolbar with wide flexible spaces

私のIPHで見られるよう

...と中央のボタンの長いタイトルと同じ...

Interface Builder screenshot showing toolbar with narrow flexible spaces

、ここでは、短期および長期の中央ボタンとツールバーです1 3GS:ここ

iPhone screenshot showing toolbar with wide flexible spaces

iPhone screenshot showing toolbar with narrow flexible spaces

+1

あなたが0.0にUIBarButtonItem幅を設定した場合、それはそうそこに、自動的にその幅を調整幅を計算する必要はありません。特にサイズが異なるローカライズされた文字列を使用する場合に特に便利です。 –

2

は、テキストの幅を見つけるための良い方法です:

​​
関連する問題