单线:
factLabel.numberOfLines = 1;
factLabel.minimumFontSize = 8;
factLabel.adjustsFontSizeToFitWidth = YES;
上面的代码会将文本的字体大小减小到(例如)8
尝试使文本适合标签内的大小。
numberOfLines = 1
是强制性的。
多行:
因为numberOfLines > 1
有一种方法可以通过NSString的sizeWithFont:... UIKit添加方法来找出最终文本的大小,例如:
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
单线:
从iOS6开始,minimumFontSize
已弃用。线
factLabel.minimumFontSize = 8.;
可以更改为:
factLabel.minimumScaleFactor = 8./factLabel.font.pointSize;
IOS 7
多行:
从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