Jak mogę zrobić tekst w zmniejszonym rozmiarze czcionki UILabel


Jeśli UILabel zawiera za dużo tekstu, jak mogę dostosować moją etykietę, aby zmniejszyła rozmiary czcionek?
Oto jak skonfigurowałem mój 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];

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

descriptionLabel.adjustsFontSizeToFitWidth = YES;
descriptionLabel.minimumFontSize = 10.0;//adjust to preference obviously

Poniższy przykład został przetestowany i zweryfikowany na symulatorze iPhone'a 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";
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aby zmienić rozmiar tekstu w wielowierszowym UILabel, możesz użyć tej metody pomocniczej (opartej na

kod
http://www.11pixel.com/blog/28 ... hone/
z 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;
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

zainstalować

dla nieruchomości
http://developer.apple.com/iph ... 3-SW8
adjustsFontSizeToFitWidth
jest TAK.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli chcesz, aby liczba wierszy również rosła w miarę potrzeb, użyj rozwiązania Steve'a H z instrukcją if jako taką:
if(labelSize.height <= aLabel.frame.size.height)
{
aLabel.numberOfLines = labelSize.height/font.lineHeight; break;
}

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się