Única linha:
factLabel.numberOfLines = 1;
factLabel.minimumFontSize = 8;
factLabel.adjustsFontSizeToFitWidth = YES;
O código acima ajustará o tamanho da fonte do seu texto para (por exemplo) 8
tentar ajustá-lo ao rótulo.
numberOfLines = 1
é mandatório.
Várias linhas:
Pois numberOfLines > 1
existe um método para descobrir o tamanho do texto final através dos métodos de adição sizeWithFont do NSString: ... UIKit , por exemplo:
CGSize lLabelSize = [yourText sizeWithFont:factLabel.font
forWidth:factLabel.frame.size.width
lineBreakMode:factLabel.lineBreakMode];
Depois disso, você pode redimensionar seu rótulo usando o resultado lLabelSize
, por exemplo (supondo que você altere apenas a altura do rótulo):
factLabel.frame = CGRectMake(factLabel.frame.origin.x, factLabel.frame.origin.y, factLabel.frame.size.width, lLabelSize.height);
iOS6
Única linha:
A partir do iOS6, minimumFontSize
foi preterido. A linha
factLabel.minimumFontSize = 8.;
pode ser alterado para:
factLabel.minimumScaleFactor = 8./factLabel.font.pointSize;
iOS7
Várias linhas:
A partir do iOS7, sizeWithFont
fica obsoleto. A caixa multilinha é reduzida para:
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