Linea sola:
factLabel.numberOfLines = 1;
factLabel.minimumFontSize = 8;
factLabel.adjustsFontSizeToFitWidth = YES;
El código anterior ajustará el tamaño de fuente de su texto a (por ejemplo) 8
tratando de ajustar su texto dentro de la etiqueta.
numberOfLines = 1
es obligatorio.
Múltiples lineas:
Porque numberOfLines > 1
hay un método para determinar el tamaño del texto final a través de sizeWithFont de NSString: ... métodos de adición UIKit , por ejemplo:
CGSize lLabelSize = [yourText sizeWithFont:factLabel.font
forWidth:factLabel.frame.size.width
lineBreakMode:factLabel.lineBreakMode];
Después de eso, puede cambiar el tamaño de su etiqueta usando el resultado lLabelSize
, por ejemplo (suponiendo que cambiará solo la altura de la etiqueta):
factLabel.frame = CGRectMake(factLabel.frame.origin.x, factLabel.frame.origin.y, factLabel.frame.size.width, lLabelSize.height);
ios 6
Linea sola:
Comenzando con iOS6, minimumFontSize
ha quedado en desuso. La línea
factLabel.minimumFontSize = 8.;
se puede cambiar a:
factLabel.minimumScaleFactor = 8./factLabel.font.pointSize;
ios 7
Múltiples lineas:
Comenzando con iOS7, se sizeWithFont
vuelve obsoleto. El caso multilínea se reduce 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