代码之家  ›  专栏  ›  技术社区  ›  R4cOOn

标题太宽时调整uibarbuttonem的大小

  •  7
  • R4cOOn  · 技术社区  · 14 年前

    背景:我想在一个 UIToolBar . 我把中间那个放在中间 U工具栏 变成一个 UIView .

    除了中间按钮的标题变大之外,所有的东西看起来都应该如此。 然后显示在左或右按钮下。

    我拿不到 U工具栏 或者 UIBarButtonItems 的宽度,以便在它们太大时能够调整它们的大小。 “uibarbuttonem”有一个非常好的 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;
    }
    
    2 回复  |  直到 13 年前
        1
  •  8
  •   NickFitz    14 年前

    在左、右按钮和中间按钮之间放置一个灵活的空间栏按钮项目,这将允许侧按钮占用的宽度只有他们所需要的,并保持中心按钮为中心,同时允许它成长到周围的空间。

    下面是我今天上午正在做的一些界面构建器的截图,显示了效果:双头箭头是IB展示灵活空间项目的方式……

    Interface Builder screenshot showing toolbar with wide flexible spaces

    …中间的按钮上还有一个较长的标题。。。

    Interface Builder screenshot showing toolbar with narrow flexible spaces

    下面是我的iPhone3GS上的中长短按键工具栏:

    iPhone screenshot showing toolbar with wide flexible spaces

    iPhone screenshot showing toolbar with narrow flexible spaces

        2
  •  2
  •   cduck Daniel    13 年前

    下面是找到文本宽度的更好方法:

    + (CGFloat)calculateTextWidth:(NSString *)text
    {
        UIFont *font = [UIFont fontWithName:@"Helvetica" size:17];
    
        return [text sizeWithFont:font].width;
    }