UILabel 的最小 ScaleFactor 是如何工作的?

我以前使用过 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];
56392 次浏览

根据 文件:

Use this property to specify the smallest multiplier for the current font size that yields an acceptable font size to use when displaying the label’s text. If you specify a value of 0 for this property, the current font size is used as the smallest font size.

因此,如果标签的默认字体大小是 10,那么您将 0.7f设置为 minimumScaleFactor,它应该做与 minimumFontSize相同的事情。

你需要设置 label.adjustsFontSizeToFitWidth = YES;

除了其他答案所说的内容之外,如果将 minSize/defaultSize (Division)作为 minimumScaleFactor,它将与使用旧的 minimumFontSize相同。

例如,如果你想使用默认标签大小的最小字体大小为10,你可以这样做:

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

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

就是说: [label setMinimumFontSize:10.0];

除了其他答案之外,我还要加上一个对初学者友好的解释,这个解释对我很有帮助:

如何计算 minimumScaleFactor?将标签的最小字体大小除以标签的默认字体大小。例如,您的默认字体大小是25。您的最小字体大小是10。

10/25 = 0.4

0.4是你的 minimumScaleFactor值。