UILabel的minimumScaleFactor如何工作?

时间:2013-02-01 16:41:58

标签: ios objective-c uilabel

之前我使用过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 个答案:

答案 0 :(得分:187)

您需要设置label.adjustsFontSizeToFitWidth = YES;

答案 1 :(得分:103)

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

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

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

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

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

答案 2 :(得分:20)

根据documentation

  

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

因此,如果您的标签的默认字体大小为10,则您将0.7f设为minimumScaleFactor,它应该与minimumFontSize执行相同的操作。

答案 3 :(得分:9)

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

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

10/25 = 0.4

0.4是您的minimumScaleFactor值。另见@ Jsdodgers的答案。