单行代码:
factLabel.numberOfLines = 1
factLabel.minimumFontSize = 8
factLabel.adjustsFontSizeToFitWidth = YES
上述代码将调整文本的字体大小,使其适应标签内的空间,例如将字体大小调整到8
。 numberOfLines = 1
是必需的。
多行文本:
对于numberOfLines > 1
,可以通过NSString的sizeWithFont:... UIKit addition方法来确定最终文本的大小,例如:
CGSize lLabelSize = [yourText sizeWithFont:factLabel.font
forWidth:factLabel.frame.size.width
lineBreakMode:factLabel.lineBreakMode]
之后,您可以使用生成的lLabelSize
来调整标签的大小,例如(假设您只更改标签的高度):
factLabel.frame = CGRectMake(factLabel.frame.origin.x, factLabel.frame.origin.y, factLabel.frame.size.width, lLabelSize.height)
iOS6
单行:
iOS 6 开始,minimumFontSize
已被弃用。这一行
factLabel.minimumFontSize = 8.
可以改变为:
factLabel.minimumScaleFactor = 8./factLabel.font.pointSize
iOS7
多行情况:
从iOS7开始,sizeWithFont
被废弃了。 多行情况可以使用以下方法:
factLabel.numberOfLines = 0;
factLabel.lineBreakMode = NSLineBreakByWordWrapping;
CGSize maximumLabelSize = CGSizeMake(factLabel.frame.size.width, CGFLOAT_MAX);
CGSize expectSize = [factLabel sizeThatFits:maximumLabelSize];
factLabel.frame = CGRectMake(factLabel.frame.origin.x, factLabel.frame.origin.y, expectSize.width, expectSize.height);
iOS 13(Swift 5):
label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.5