UILabel的minimumScaleFactor如何工作?
我以前使用过minimumFontSize
,但是现在不推荐使用这个函数,我不太明白minimumScaleFactor
是如何工作的。
我想最大字体大小为10,最小为7。
我怎样才能实现重新缩小到字体大小为7的比例因子?
UILabel
创build:
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(division)作为minimumScaleFactor
,则与使用旧的minimumFontSize
相同。
例如,如果您希望使用默认标签大小的最小字体大小为10,则可以执行以下操作:
[label setMinimumScaleFactor:10.0/[UIFont labelFontSize]];
(如果不是默认的,请用标签的字体大小replace[UIFont labelFontSize]
)。
这将是相同的: [label setMinimumFontSize:10.0];
根据文件 :
使用此属性可指定当前字体大小的最小倍数,以便在显示标签的文本时生成可接受的字体大小。 如果为此属性指定值0,则当前字体大小将用作最小字体大小。
所以如果你的标签的默认字体大小是10
,你把0.7f
作为minimumScaleFactor
,它应该做和minimumFontSize
一样的事情。
除了其他答案之外,我还要添加一个帮助自己的有益于初学者的解释:
如何计算minimumScaleFactor
? 将标签的最小字体大小除以标签的默认字体大小。 例如,您的默认字体大小是25.您的最小字体大小是10。
10/25 = 0.4
0.4是您的minimumScaleFactor
值。 另请参阅上面的@ Jsdodgers的答案。