我以前使用过
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];
您需要设置
label.adjustsFontSizeToFitWidth = YES;
除了其他答案所说的之外,如果您将 minSize/defaultSize (分区)作为
minimumScaleFactor
,则与使用旧的 minimumFontSize
相同。
例如,如果您希望使用默认标签大小时最小字体大小为 10,您可以这样做:
[label setMinimumScaleFactor:10.0/[UIFont labelFontSize]];
(如果不是默认值,请将
[UIFont labelFontSize]
替换为标签的字体大小)。
这与以下内容相同:
[label setMinimumFontSize:10.0];
根据文档:
使用此属性指定当前字体大小的最小倍数,该倍数可在显示标签文本时产生可接受的字体大小。如果您为此属性指定值 0,则当前字体大小将用作最小字体大小。
因此,如果标签的默认字体大小为
10
,则将 0.7f
作为 minimumScaleFactor
,它应该执行与 minimumFontSize
相同的操作。
除了其他答案之外,我还将添加一个对初学者友好的解释,以帮助自己:
如何计算
minimumScaleFactor
?将标签的最小字体大小除以标签的默认字体大小。例如,您的默认字体大小是 25。您的最小字体大小是 10。
10/25=0.4
0.4 是您的
minimumScaleFactor
值。另请参阅上面@Jsdodgers 的回答。
titleLabel.minimumScaleFactor = 0.5
titleLabel.numberOfLines = 1
titleLabel.adjustsFontSizeToFitWidth = true
titleLabel 它是 UILabel,为了工作,你只需要拥有它,你还需要更好地理解 TrailingAnchor 或leadingAnchor