Linea singola:
factLabel.numberOfLines = 1;
factLabel.minimumFontSize = 8;
factLabel.adjustsFontSizeToFitWidth = YES;
Il codice sopra regolerà la dimensione del carattere del testo fino a (ad esempio) 8
cercando di adattare il testo all'interno dell'etichetta.
numberOfLines = 1
è obbligatorio.
Più linee:
Perché numberOfLines > 1
esiste un metodo per capire la dimensione del testo finale attraverso sizeWithFont di NSString: ... Metodi di aggiunta UIKit , ad esempio:
CGSize lLabelSize = [yourText sizeWithFont:factLabel.font
forWidth:factLabel.frame.size.width
lineBreakMode:factLabel.lineBreakMode];
Dopodiché puoi semplicemente ridimensionare l'etichetta usando risultante lLabelSize
, ad esempio (supponendo che cambierai solo l'altezza dell'etichetta):
factLabel.frame = CGRectMake(factLabel.frame.origin.x, factLabel.frame.origin.y, factLabel.frame.size.width, lLabelSize.height);
iOS6
Linea singola:
A partire da iOS6, minimumFontSize
è stato deprecato. La linea
factLabel.minimumFontSize = 8.;
può essere modificato in:
factLabel.minimumScaleFactor = 8./factLabel.font.pointSize;
iOS 7
Più linee:
A partire da iOS7, sizeWithFont
diventa obsoleto. Il caso multilinea è ridotto a:
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