2012-10-16 17 views
21

Po dodaniu tekstu do etykiety z adjustsFontSizeToFitWidth ustawionym na YES tekst nie jest już wyśrodkowany w pionie i ostatecznie przycina tekst w dolnej części ramki etykiety. W przypadku dużej ilości tekstu ostatecznie zniknie z dolnej części etykiety.Wycinanie UILabel podczas dopasowywaniaFontSizeToFitWidth

View background is blue, label background is white

To co się dzieje, jeśli dodać mniej tekst:

enter image description here

To jest obcięty jak bym go spodziewać (czyli rozmiar czcionki nie zmniejszyć, tekst został pionowo wyśrodkowany w etykiecie i obcięty na górze i na dole.

enter image description here

Oto kod do odtworzenia:

- (void)loadView { 
    [super loadView]; 

    self.view.backgroundColor = [UIColor blueColor]; 
    testLabel = [[UILabel alloc] init]; 
    testLabel.font = [UIFont boldSystemFontOfSize:172]; 
    testLabel.textColor = [UIColor blackColor]; 
    testLabel.adjustsFontSizeToFitWidth = YES; 
    testLabel.numberOfLines = 1; 
    testLabel.frame = CGRectMake(50, 50, 300, 100); 
    testLabel.text = @"123"; 

    [self.view addSubview:testLabel]; 
} 

Czy tak się stanie? W jaki sposób ustawić etykietę pionowo w centrum, niezależnie od liczby znaków w etykiecie?

Odpowiedz

38

Dodaj

testLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters; 

do kodu do pionowej-center tekst na skali czcionki.

+1

Genialny, Krumelur! To działało idealnie, nie miałem pojęcia o tej nieruchomości. Byłbym pomocny dla właściwości adjustFontSizeToFitWidth, aby wspomnieć, że jest to odwołanie do klasy. Dzięki jeszcze raz. –

+0

działa idealnie. –

+1

tyle lat pracy z UILabel i nigdy nie spotkałem tej nieruchomości)) – Tim

-1

Chciałbym również dodać, że adjustsFontSizeToFitWidth nie działa zbyt dobrze z przypisanym tekstem, więc dodaj atrybuty do etykiety zamiast przypisanego tekstu, jeśli możesz. To działało dla mnie.