To pytanie może być duplikatem this one. Ale odpowiedzi nie działają dla mnie i chcę być bardziej konkretny.Zmiana atrybutów ciągów w NSAttributedString
Mam NSString
, ale potrzebuję NS(Mutable)AttributedString
, a niektóre słowa w tym ciągu powinny mieć inny kolor. Próbowałem tego:
NSString *text = @"This is the text and i want to replace something";
NSDictionary *attributes = @ {NSForegroundColorAttributeName : [UIColor redColor]};
NSMutableAttributedString *subString = [[NSMutableAttributedString alloc] initWithString:@"AND" attributes:attributes];
NSMutableAttributedString *newText = [[NSMutableAttributedString alloc] initWithString:text];
newText = [[newText mutableString] stringByReplacingOccurrencesOfString:@"and" withString:[subString mutableString]];
"i" powinny być wielkimi literami i czerwonymi.
Dokumentacja mówi, że mutableString zachowuje odwzorowania atrybutów. Ale z moją rzeczą zastępującą, nie mam więcej attributedString po prawej stronie zadania (w ostatnim wierszu kodu).
Jak mogę uzyskać to, czego chcę? ;)
najpierw zmień ciąg. Następnie utwórz nowy NSMutableAttributedString ze zmienionym ciągiem znaków, a następnie ustaw atrybut jako kolor czerwony. Nie można zmienić ciągu znaków i oczekiwać zachowania atrybutów. – croyneaus4u