一些背景:我希望在UIToolBar
上有3个按钮。我设法通过将UIToolBar
本身放入UIView
将中间的一个放在中心位置。
除了中间按钮的标题太大之外,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;
}
答案 0 :(得分:8)
在左右按钮和中央按钮之间放置一个灵活的空格键按钮项;这将允许侧面按钮占据他们需要的宽度,并保持中心按钮居中,同时允许它生长到它周围的空间。
以下是Interface Builder的一些屏幕截图,其中显示了我今天早上正在研究的效果:双头箭头是IB展示灵活空间物品的方式......
...和中心按钮上的标题相同......
这是我的iPhone 3GS上显示的带有短和长中心按钮的工具栏:
答案 1 :(得分:2)
以下是查找文字宽度的更好方法:
+ (CGFloat)calculateTextWidth:(NSString *)text
{
UIFont *font = [UIFont fontWithName:@"Helvetica" size:17];
return [text sizeWithFont:font].width;
}