115

我以前用过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];
4

4 回答 4

219

您需要设置label.adjustsFontSizeToFitWidth = YES;

于 2013-03-04T18:40:43.613 回答
107

除了其他答案所说的之外,如果您将 minSize/defaultSize (division) 作为minimumScaleFactor,它将与使用旧的minimumFontSize.

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

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

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

这与以下内容相同: [label setMinimumFontSize:10.0];

于 2013-03-11T06:10:42.603 回答
20

根据文档

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

因此,如果您的标签的默认字体大小为10,您将其设置0.7f为 aminimumScaleFactor并且它应该做同样的事情minimumFontSize

于 2013-02-01T16:44:30.260 回答
14

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

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

10/25 = 0.4

0.4 是你的minimumScaleFactor价值。另请参阅上面的@Jsdodgers 答案。

于 2016-04-17T02:04:40.433 回答