2013-07-21 20 views
7

Sto sviluppando un'applicazione per iOS> 5.0 e utilizzando Xcode 4.6.2 Per spiegare il mio problema, ho uno UIScrollView che contiene solo un gruppo di UILabel. Il testo che ho intenzione di visualizzare in questi UILabel s sono dinamici, ma, cornice UILabel s' è costante, quindi se il testo attuale non rientra nella larghezza del telaio, ho bisogno di scalare la mia dimensione del carattere in giù. Quindi, ho trovato la proprietà adjustsFontSizeToFitWidth di UILabel.adjustFontSizeToFitWidth non funziona correttamente

Ecco la spiegazione ho preso direttamente da UILabel di riferimento di classe.

Un valore booleano che indica se la dimensione del carattere deve essere ridotta per adattarsi alla stringa del titolo nel rettangolo di delimitazione dell'etichetta.

Yeap, ho pensato che è quello che cerco esattamente dal momento che il testo che sto per visualizzare in UILabel è sempre una riga. Quindi sono a conoscenza di questa proprietà dovrebbe essere usata con numberOfLines proprietà per impostare 1.

Ecco il mio codice per rendere questo accada.

for (NSString *currentImage in self.imagesNames) 
{ 
    UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(imageNumber*resultTypeImageWidth, 10, 75, 35)]; 
    [lbl setFont:[UIFont fontWithName:@"GothamRounded-Bold" size:25]]; 
    [lbl setNumberOfLines:1]; 
    [lbl setText:currentImage]; 
    [lbl setBackgroundColor:[UIColor clearColor]]; 
    [lbl setTextColor:[UIColor colorWithHue:0.07 saturation:1 brightness:0.49 alpha:1.0]]; 
    [lbl adjustsFontSizeToFitWidth]; 
    [lbl setTextAlignment:NSTextAlignmentCenter]; 
    imageNumber++; 
    [self.resultTypeScrollView addSubview:lbl]; 
} 

imageNumber è un int che sto usando per collocare questo UILabel s in luogo appropriato nel mio UIScrollView che è il nome resultTypeScrollView. resultTypeImageWidth è una costante che ho definito e impostato 100 per dare uno spazio tra UILabel s.

Quindi, il mio problema è se il testo non si adatta nel telaio della griffe, esso viene troncato. Mi aspettavo che se il testo non si adattava al fotogramma, la dimensione del carattere si ridimensiona per adattarsi. Almeno, questo è quello che ho capito da UILabelclass reference. Apparentemente, mi manca qualcosa, ma cosa?

Finora,

  1. Come sto usando carattere personalizzato, ho il sospetto che l'utilizzo di carattere personalizzato sarebbe un problema. Così, sono passato a uno dei font di sistema, non ha alcun effetto.
  2. ho cercato di impostare NSLineBreakMode-NSLineBreakByClipping per evitare che il testo ottenere troncato. Dopodiché, il testo non viene troncato, ma mancano alcuni caratteri che sono stati troncati prima.
  3. Ho anche usato minimumScaleFactor di impostare valori diversi per vedere se ha qualche effetto, ma, nessun effetto a tutti.
+0

questo dovrebbe funzionare solo senza modificare molte impostazioni predefinite. una cosa che noto è che il tuo codice non imposta adjustsFontSizeToFitWidth, lo ottiene solo. l'impostazione sarebbe simile a lbl.adjustsFontSizeToFitWidth = YES; – danh

+0

@danh, questo era il problema, non so come mi sono perso, aggiungi il tuo commento come risposta, lo accetto, grazie :) – limon

+0

contento che abbia aiutato. Grazie. – danh

risposta

8

Questo dovrebbe funzionare senza cambiare molti valori predefiniti. Il codice postato non imposta adjustsFontSizeToFitWidth, lo ottiene solo. Impostazione sarebbe simile a questa:

lbl.adjustsFontSizeToFitWidth = YES; 
+0

Fantastico !! Molte grazie. – nithinreddy

Problemi correlati