垂直中心UILabel大小调整大小的字体

时间:2014-06-17 13:17:29

标签: ios uilabel

我有一个设置了约束的UIlabel。左侧和右侧以及垂直中心的约束被设置为标签。父视图宽度是动态的,意味着可以更宽或更宽,但高度是静态的。标签将设置一些长或短的文本。 我还设置了最小字体大小,以便字体不会换行并仅将其设置为一行。由于我设置了最小字体大小,因此文本高度会自动调整以适应文本,但问题是文本不是垂直居中而是位于UI标签的底部。 我试图调整UIlabel的高度,但我不能根据新的字体大小和何时设置新的大小来调整大小。我通过获取字体大小并动态设置高度来尝试解决方案,而不是导致意外结果。我在iOS 6上运行它。

1 个答案:

答案 0 :(得分:0)

我自己想通了。以下是示例代码

+(void)autoFontResizeLabel:(UILabel*)label inView:(UIView*)containerView{

     NSString *text = label.text;
     //determine the font size
    CGFloat actualFontSize;
    [text sizeWithFont:label.font
             minFontSize:18
          actualFontSize:&actualFontSize
                forWidth:label.bounds.size.width
           lineBreakMode:label.lineBreakMode];

    //reset the label content and frame
    [label setText:@""];
    [label setText:text];
    //turn off auto adjust to allow new text with correct font
    label.adjustsFontSizeToFitWidth = NO;

    [label setFont:[UIFont fontWithName:@"HelveticaNeue" size:actualFontSize]];
    //optional
    [label sizeToFit];
    CGSize barSize = containerView.frame.size;

    CGFloat titleY = fabsf(barSize.height - label.frame.size.height)/2;
    [label setFrame:CGRectMake(label.frame.origin.x, titleY, label.frame.size.width,     label.frame.size.height)];
}