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;
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. –