Одна линия:
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
, например, используя result (при условии, что вы измените только высоту метки):
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