Einzelne Zeile:
factLabel.numberOfLines = 1;
factLabel.minimumFontSize = 8;
factLabel.adjustsFontSizeToFitWidth = YES;
Mit dem obigen Code wird die Schriftgröße Ihres Textes so angepasst, dass (zum Beispiel) 8
versucht wird, Ihren Text in die Beschriftung einzufügen.
numberOfLines = 1
ist obligatorisch.
Mehrere Zeilen:
Denn numberOfLines > 1
es gibt eine Methode, um die Größe des endgültigen Textes mithilfe von NSStrings sizeWithFont: ... UIKit-Additionsmethoden zu ermitteln, zum Beispiel:
CGSize lLabelSize = [yourText sizeWithFont:factLabel.font
forWidth:factLabel.frame.size.width
lineBreakMode:factLabel.lineBreakMode];
Danach können Sie einfach die Größe Ihres Etiketts ändern lLabelSize
, indem Sie beispielsweise das Ergebnis verwenden (vorausgesetzt, Sie ändern nur die Höhe des Etiketts):
factLabel.frame = CGRectMake(factLabel.frame.origin.x, factLabel.frame.origin.y, factLabel.frame.size.width, lLabelSize.height);
iOS6
Einzelne Zeile:
Ab iOS6 minimumFontSize
ist veraltet. Die Linie
factLabel.minimumFontSize = 8.;
kann geändert werden zu:
factLabel.minimumScaleFactor = 8./factLabel.font.pointSize;
iOS7
Mehrere Zeilen:
Ab iOS7 sizeWithFont
wird es veraltet. Der mehrzeilige Fall reduziert sich auf:
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