UILabel的minimumScaleFactor如何工作?

问题描述 投票:0回答:5

我以前使用过

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];
ios objective-c uilabel
5个回答
230
投票

您需要设置

label.adjustsFontSizeToFitWidth = YES;


109
投票

除了其他答案所说的之外,如果您将 minSize/defaultSize (分区)作为

minimumScaleFactor
,则与使用旧的
minimumFontSize
相同。

例如,如果您希望使用默认标签大小时最小字体大小为 10,您可以这样做:

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

(如果不是默认值,请将

[UIFont labelFontSize]
替换为标签的字体大小)。

这与以下内容相同:

[label setMinimumFontSize:10.0];


20
投票

根据文档

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

因此,如果标签的默认字体大小为

10
,则将
0.7f
作为
minimumScaleFactor
,它应该执行与
minimumFontSize
相同的操作。


18
投票

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

如何计算

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

10/25=0.4

0.4 是您的

minimumScaleFactor
值。另请参阅上面@Jsdodgers 的回答。


0
投票
titleLabel.minimumScaleFactor = 0.5
titleLabel.numberOfLines = 1
titleLabel.adjustsFontSizeToFitWidth = true

titleLabel 它是 UILabel,为了工作,你只需要拥有它,你还需要更好地理解 TrailingAnchor 或leadingAnchor

© www.soinside.com 2019 - 2024. All rights reserved.