Pojedyncza linia:
factLabel.numberOfLines = 1;
factLabel.minimumFontSize = 8;
factLabel.adjustsFontSizeToFitWidth = YES;
Powyższy kod dostosuje rozmiar czcionki tekstu do (na przykład) 8
próby dopasowania tekstu do etykiety.
numberOfLines = 1
jest obowiązkowe.
Wiele linii:
Dla numberOfLines > 1
istnieje metoda, aby dowiedzieć się rozmiar tekstu końcowego przez NSString za sizeWithFont ... addycyjnych UIKit metody, na przykład:
CGSize lLabelSize = [yourText sizeWithFont:factLabel.font
forWidth:factLabel.frame.size.width
lineBreakMode:factLabel.lineBreakMode];
Następnie możesz po prostu zmienić rozmiar etykiety przy użyciu wynikowego lLabelSize
, na przykład (zakładając, że zmienisz tylko wysokość etykiety):
factLabel.frame = CGRectMake(factLabel.frame.origin.x, factLabel.frame.origin.y, factLabel.frame.size.width, lLabelSize.height);
iOS6
Pojedyncza linia:
Począwszy od iOS6, minimumFontSize
był przestarzały. Linia
factLabel.minimumFontSize = 8.;
można zmienić na:
factLabel.minimumScaleFactor = 8./factLabel.font.pointSize;
iOS7
Wiele linii:
Począwszy od iOS7, sizeWithFont
staje się przestarzały. Obudowa multilinii została zredukowana do:
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