Próbuję utworzyć wielowierszową UILabel z NSMutableAttributedString. Działa to dobrze, kiedy przypisać atrybut do kompletnego łańcucha takiego:Jak renderować multilinię UILabel z 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;
Ale co potrzebne jest, aby zastosować szereg atrybutów dla poszczególnych podzakresów z NSAttributedString (pogrubienie niektórych słów).
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;
To, co znajduję, to to, że jeśli to zrobię, tekst nie będzie już renderowany przez wiele linii w etykiecie. Jest renderowany jako pojedyncza linia, wyśrodkowany pionowo w ramce etykiety.
Czy jest tu coś, czego mi brakuje?
Czy etykietka była wystarczająco wysoka dla drugiej linii? –
Nie mogę tego odtworzyć w wersji 6.1. Zauważam, że twój kod jest trochę niepoprawny (brakuje go) w linii setFont: i zamiast tego używasz "etykiety" zamiast "contentLabel" w jednym miejscu). Jesteś pewien, że to jest rzeczywisty kod? –
@Kevin Ballard: Tak, etykieta jest wystarczająco wysoka. – adriaan