Sto provando a creare un UILabel multilinea con NSMutableAttributedString. Questo funziona bene quando assegno un attributo alla stringa completa in questo modo:Come eseguire il rendering di un UILabel multilinea con NSMutableAttributedString
UILabel *contentLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,200,100)];
[contentLabel setLineBreakMode:NSLineBreakByWordWrapping];
[contentLabel setNumberOfLines:0];
[contentLabel setFont:[UIFont systemFontOfSize:13];
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"hello I am a long sentence that should break over multiple lines"];
[string addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:13] range:NSMakeRange(0, [string length])];
contentLabel.attributedText = string;
Ma io cosa ho bisogno è di applicare una serie di attributi per i diversi sottocampi del NSAttributedString (a certe parole in grassetto).
UILabel *contentLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,200,100)];
[contentLabel setLineBreakMode:NSLineBreakByWordWrapping];
[contentLabel setNumberOfLines:0];
[contentLabel setFont:[UIFont systemFontOfSize:13];
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"hello I am a long sentence that should break over multiple lines"];
[string addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:13] range:NSMakeRange(3, 5)];
contentLabel.attributedText = string;
Quello che sto trovando è che se lo faccio, il testo non viene più visualizzato su più righe nell'etichetta. Viene visualizzato come una singola linea, centrata verticalmente nel riquadro dell'etichetta.
C'è qualcosa che mi manca qui?
Hai reso l'etichetta abbastanza alta per la seconda linea? –
Non riesco a riprodurre questo su 6.1. Prendo atto che il codice è leggermente errato (manca un elemento) in setFont: line e si utilizza "label" anziché "contentLabel" in un unico punto). Sei sicuro che questo sia il codice vero? –
@Kevin Ballard: Sì, l'etichetta è abbastanza alta. – adriaan