2013-02-10 22 views
9

Ho UILabel che contiene due stringhe attribuite separate da una nuova riga. La prima stringa ha dimensione carattere impostata su 17 e la seconda su 14. Desidero che il mio primo NSMutableAttributedString venga ridimensionato alla dimensione minima del carattere se il suo contenuto non può essere contenuto in una singola riga.iOS - UILabel Auto-shrink con testo attribuito

È possibile?

È abbastanza semplice configurare tale comportamento UILabel impostando "riduci automaticamente alla dimensione minima del carattere" in IB per il testo normale, ma non si sa come farlo per il testo attribuito.

Ecco il mio codice:

NSString *eventName = @"Looong Event Name"; 
NSString *placeString = @"My place"; 

eventName = [eventName stringByAppendingString:@"\n"];   
NSMutableAttributedString *attrName = [[NSMutableAttributedString alloc] initWithString:eventName]; 
[attrName addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:17] range:NSMakeRange(0, [eventName length])]; 


NSMutableAttributedString *attrPlace = [[NSMutableAttributedString alloc] initWithString:placeString]; 
[attrPlace addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14] range:NSMakeRange(0, placeString.length)]; 
[attrPlace addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:NSMakeRange(0, placeString.length)]; 

    NSMutableAttributedString *finalString = [[NSMutableAttributedString alloc] initWithAttributedString:attrName]; 
    [finalString appendAttributedString:attrPlace]; 

    UILabel *nameLabel = (UILabel *)[cell viewWithTag:100]; 

    nameLabel.attributedText = finalString; 
+0

Questo è diventato il mal di testa quando ho provato a farlo. Non invierò questa risposta come risposta perché è probabile che ci sia una soluzione migliore che non sono stato in grado di trovare. Ma, ho finito per configurare tutti gli attributi della mia stringa a livello di codice (eccetto quelli che hanno a che fare con le dimensioni) e ho reso l'etichetta IBOutlet e configurato "Minimum Font Size" nel menu "Autoshrink" nella finestra di ispezione degli attributi. –

risposta

4

Credo che questo è un follow-on dal earlier question.

Non penso che sia possibile farlo automaticamente, ma esiste un metodo size di NSAttributedString che è possibile utilizzare per verificare se la stringa è troppo grande e regolare se necessario.

+0

Grazie ancora! :-) – Oleg

+0

Quindi l'hai risolto Oleg? – Simon

+0

Sì, alla fine ho usato due UILabels in testo in chiaro separati. – Oleg

Problemi correlati