2010-11-18 96 views
7

某些背景:我想在UIToolBar上有3個按鈕。我設法讓中間的一個居中,把所有的東西都放到UIToolBar本身中,變成UIView當標題變得太寬時調整UIBarButtonItem的大小

當中間按鈕的標題變得太大時,所有東西看起來應該與它不同。 然後顯示在左側或右側按鈕下方。

我無法獲得UIToolBarUIBarButtonItems的寬度,以便在它們太大時能夠調整它們的大小。 「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; 
} 

回答

8

在左右按鈕和中央按鈕之間放置一個靈活的空格鍵按鈕項;這將允許側面按鈕佔據他們需要的寬度,並保持中心按鈕居中,同時允許其長入周圍的空間。

下面是從東西我工作的這個早上,顯示效果Interface Builder的幾個截圖:雙頭箭頭是顯示靈活空間項目的IB的方式...

Interface Builder screenshot showing toolbar with wide flexible spaces

...並與中心鍵較長的標題一樣...

Interface Builder screenshot showing toolbar with narrow flexible spaces

,這裏是因爲看到我的IPH有短期和長期的中央按鈕工具欄一個3GS:

iPhone screenshot showing toolbar with wide flexible spaces

iPhone screenshot showing toolbar with narrow flexible spaces

+1

如果你設置的UIBarButtonItem寬度爲0.0,它會自動調整其寬度,所以不需要計算寬度。在使用本地化的字符串時,它們的大小始終不一樣,特別有用 – 2011-12-14 10:17:32

2

這裏是查找的文字寬度更好的辦法:

​​
相關問題