首页 文章

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

提问于
浏览
0

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

1 回答

  • 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)];
    }
    

相关问题