iphone - tipo - ¿Cómo puedo hacer texto en un tamaño de fuente UILabel reducir
tamaño letra iphone (4)
Establezca la propiedad adjustsFontSizeToFitWidth
en YES.
Si una UILabel contiene demasiado texto, ¿cómo puedo configurar mi etiqueta para que reduzca el tamaño de las fuentes?
Aquí es cómo estoy configurando mi UILabel:
descriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(200, 30, 130, 150)];
[descriptionLabel setFont:[Utils getSystemFontWithSize:14]];
[descriptionLabel setBackgroundColor:[UIColor clearColor]];
[descriptionLabel setTextColor:[UIColor whiteColor]];
descriptionLabel.numberOfLines = 1;
[self addSubview:descriptionLabel];
Para cambiar el tamaño del texto en una UILabel multilínea, puede usar este método auxiliar (basado en el code de 11 Pixel Studios):
+ (void)resizeFontForLabel:(UILabel*)aLabel maxSize:(int)maxSize minSize:(int)minSize {
// use font from provided label so we don''t lose color, style, etc
UIFont *font = aLabel.font;
// start with maxSize and keep reducing until it doesn''t clip
for(int i = maxSize; i >= minSize; i--) {
font = [font fontWithSize:i];
CGSize constraintSize = CGSizeMake(aLabel.frame.size.width, MAXFLOAT);
// This step checks how tall the label would be with the desired font.
CGSize labelSize = [aLabel.text sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
if(labelSize.height <= aLabel.frame.size.height)
break;
}
// Set the UILabel''s font to the newly adjusted font.
aLabel.font = font;
}
Si desea que la cantidad de líneas también aumente si es necesario, use la solución de Steve N, con la declaración if:
if(labelSize.height <= aLabel.frame.size.height)
{
aLabel.numberOfLines = labelSize.height / font.lineHeight;
break;
}
descriptionLabel.adjustsFontSizeToFitWidth = YES;
descriptionLabel.minimumFontSize = 10.0; //adjust to preference obviously
El siguiente ejemplo se prueba y verifica en iPhone Simulator 3.1.2:
UILabel *descriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(90, 0, 200, 30)];
descriptionLabel.font = [UIFont systemFontOfSize:14.0];
descriptionLabel.minimumFontSize = 10.0;
descriptionLabel.adjustsFontSizeToFitWidth = YES;
descriptionLabel.numberOfLines = 1;
descriptionLabel.text = @"supercalifragilisticexpialidocious even thought he sound of it is something quite attrocious";