2012-10-16 11 views
21

Quando aggiungo del testo a un'etichetta con adjustsFontSizeToFitWidth impostato su YES, il testo non è più centrato verticalmente e alla fine ritaglia il testo nella parte inferiore della cornice dell'etichetta. Per una grande quantità di testo finirà per scomparire dalla parte inferiore dell'etichetta.Ritaglio di UILabel quando regolaFontSizeToFitWidth

View background is blue, label background is white

Questo è quello che succede se si aggiunge meno del testo:

enter image description here

Questo è ritagliato come ci si aspetta (cioè la dimensione del carattere non ha ridotto, il testo è stato verticale centrato nell'etichetta e agganciato alla parte superiore e inferiore.

enter image description here

Ecco il codice da riprodurre:

- (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]; 
} 

In questo caso? E come faccio a centrare verticalmente la mia etichetta indipendentemente dal numero di caratteri nella mia etichetta.

risposta

38

Aggiungere

testLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters; 

al codice a verticale-center il testo sulla scala font.

+1

Brillante, Krumelur! Questo ha funzionato perfettamente, non avevo idea di questa proprietà. Sarei utile per la proprietà adjustFontSizeToFitWidth per menzionare che questo è il riferimento di classe. Grazie ancora. –

+0

funziona perfettamente. –

+1

tanti anni di lavoro con UILabel e non ho mai incontrato questa proprietà)) – Tim

-1

Vorrei anche aggiungere che adjustFontSizeToFitWidth non funziona troppo bene con il testo attribuito, quindi se possibile aggiungi i tuoi attributi all'etichetta anziché al testo attribuito. Questo ha funzionato per me.