Une seule ligne:
factLabel.numberOfLines = 1;
factLabel.minimumFontSize = 8;
factLabel.adjustsFontSizeToFitWidth = YES;
Le code ci-dessus ajustera la taille de la police de votre texte à (par exemple) 8
essayer d'adapter votre texte dans l'étiquette.
numberOfLines = 1
est obligatoire.
Plusieurs lignes:
Car numberOfLines > 1
il existe une méthode pour déterminer la taille du texte final grâce aux méthodes d' addition sizeWithFont: ... UIKit de NSString , par exemple:
CGSize lLabelSize = [yourText sizeWithFont:factLabel.font
forWidth:factLabel.frame.size.width
lineBreakMode:factLabel.lineBreakMode];
Après cela, vous pouvez simplement redimensionner votre étiquette en utilisant le résultat lLabelSize
, par exemple (en supposant que vous ne changerez que la hauteur de l'étiquette):
factLabel.frame = CGRectMake(factLabel.frame.origin.x, factLabel.frame.origin.y, factLabel.frame.size.width, lLabelSize.height);
iOS6
Une seule ligne:
Depuis iOS6, minimumFontSize
est obsolète. La ligne
factLabel.minimumFontSize = 8.;
peut être changé en:
factLabel.minimumScaleFactor = 8./factLabel.font.pointSize;
IOS 7
Plusieurs lignes:
À partir d'iOS7, sizeWithFont
devient obsolète. Le cas multiligne est réduit à:
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