Одина рядок:
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;
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