Ios 自动调整UILabel的内容

Ios 自动调整UILabel的内容,ios,objective-c,Ios,Objective C,我已经确定了UILabel的界限。单行,2-3个单词。我必须改变字体大小。以编程方式将内容调整为强确定矩形的最佳解决方案是什么?设置标签的最小字体比例 _myLabel.adjustsFontSizeToFitWidth = YES; _myLabel.minimumScaleFactor = 0.5f; 在XIB中使用Autoshrink属性(或以编程方式),并设置最小字体大小,文本将适应空间。但是使用最小字体 我找到了手动检查尺寸的解决方案。其他解决方案工作不正常。也许这段代码会对某人有所

我已经确定了
UILabel
的界限。单行,2-3个单词。我必须改变字体大小。以编程方式将内容调整为强确定矩形的最佳解决方案是什么?

设置标签的最小字体比例

_myLabel.adjustsFontSizeToFitWidth = YES;
_myLabel.minimumScaleFactor = 0.5f;

在XIB中使用Autoshrink属性(或以编程方式),并设置最小字体大小,文本将适应空间。但是使用最小字体


我找到了手动检查尺寸的解决方案。其他解决方案工作不正常。也许这段代码会对某人有所帮助。下面是要解决的代码:

-(void) autoResizeLabel: (UILabel*) label withMaxWidth:(CGFloat)mw withMaxHeight:(CGFloat)mh
{

    CGFloat fontSize = 1.f;

    CGFloat outSize = fontSize;
    CGFloat mDelta = 30.f;
    CGFloat delta = 1.f;
    BOOL activated = NO;
    BOOL broken = NO;
      for (float fSize = fontSize; fSize < fontSize + mDelta; fSize += delta)
    {
        CGRect r = [label.text boundingRectWithSize:label.frame.size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:fSize]} context:nil];
        CGFloat width = r.size.width;
        CGFloat height = r.size.height;


        if (mw <= width || mh <= height)
        {
            if (activated)
            {
                outSize = fSize - delta;
            }
            broken = YES;
           break;
        }
        activated = YES;

        //NSLog(@"%f;%f;%f",fSize,mw,mh);
    }
    if (activated && !broken) outSize = fontSize + mDelta - delta;
    [label setFont:[UIFont systemFontOfSize:outSize]];


}
-(void)自动ResizeLabel:(UILabel*)最大宽度标签:(CGFloat)最大高度标签(CGFloat)mw:(CGFloat)mh
{
CGSIZE=1.f;
CGFloat OVERSIZE=fontSize;
CGFloat mDelta=30.f;
CGFloat delta=1.f;
BOOL激活=否;
布尔破=否;
对于(浮点fSize=fontSize;fSize如果(如果设置
)\u myLabel.adjustsFontSizeToFitWidth=YES;
确定,这是一个过程-您调用
[label sizeToFit];
,它会根据标签的当前字体来调整内容。然后更改字体,这就是最小比例因子的作用点。