UILabel的minimumScaleFactor如何工作?

Pad*_*215 104 objective-c uilabel ios

我之前使用minimumFontSize过,但该功能现已弃用,我不太明白它是如何minimumScaleFactor工作的.

我希望最大字体大小为10,最小字体大小为7.

如何使用比例因子将尺寸缩小到字体大小7?

UILabel 创建:

UILabel *label = [[UILabel alloc] init];
[label setTranslatesAutoresizingMaskIntoConstraints:NO];
label.text =  [labelName uppercaseString];
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.font = [UIFont fontWithName:HELVETICA_FONT_STYLE_BOLD size:9.5];
label.backgroundColor = [UIColor clearColor];
label.minimumScaleFactor = .1f;

[label addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[label(WIDTH)]"
                                                              options:0
                                                              metrics:@{@"WIDTH" : [NSNumber numberWithFloat:buttonSize.width]}
                                                                views:NSDictionaryOfVariableBindings(label)]];

[contentView addSubview:label];
Run Code Online (Sandbox Code Playgroud)

小智 195

你需要设置 label.adjustsFontSizeToFitWidth = YES;

  • 注意:"Apple的文档说minimalScaleFactor仅在numberOfLines设置为1时才有效.使用0或大于1的任何东西都不起作用." .谢谢SeanK. (11认同)
  • 完美,这就是我自己的代码中缺少的内容。感谢:D (2认同)

Jsd*_*ers 103

除了其他答案所说的,如果你把minSize/defaultSize(除)作为minimumScaleFactor,它将与使用旧的相同minimumFontSize.

例如,如果您希望使用默认标签大小将最小字体大小设置为10,则可以执行以下操作:

[label setMinimumScaleFactor:10.0/[UIFont labelFontSize]];

([UIFont labelFontSize]如果不是默认值,请替换为标签的字体大小).

这将是相同的: [label setMinimumFontSize:10.0];


kov*_*pas 20

根据文件:

使用此属性指定当前字体大小的最小乘数,以产生在显示标签文本时使用的可接受字体大小.如果为此属性指定值0,则使用当前字体大小作为最小字体大小.

因此,如果你的标签的默认字体大小是10,你把它0.7f作为一个minimumScaleFactor,它应该做同样的事情minimumFontSize.

  • Log139:你的numberOfLines设置为什么?Apple的文档说,minimumScaleFactor只有在numberOfLines设置为1时才有效.使用0或大于1的任何东西都不起作用. (9认同)
  • @SeanK 即使 numberOfLines 设置为大于 1 但不是 0,它也会工作。 (2认同)

AVo*_*Vog 11

除了其他答案之外,我将添加一个帮助自己的初学者友好解释:

怎么计算minimumScaleFactor?将标签的最小字体大小除以标签的默认字体大小.例如,您的默认字体大小为25.您的最小字体大小为10.

10/25 = 0.4

0.4是你的minimumScaleFactor价值.另见@ Jsdodgers的答案.