Poszukuję sposobu na kolorowanie pierwszego słowa w zdaniu w innym kolorze niż w pozostałej części zdania. METHOD_001 najpierw koloruje cały ciąg biały, a następnie zmienia kolory pierwszych 8 znaków na czerwono. METHOD_002 Koloruje pierwsze 8 znaków na czerwono, przed użyciem długości ciągu do obliczenia pozostałych znaków i pokolorowania ich na biało.Modyfikowanie całego NSMutableAttributedString za pomocą metody addAttribute:
METHOD_001 jest zdecydowanie najlepsze, ale jestem ciekaw, czy istnieje prostszy sposób, spodziewałem się znaleźć NSMutableAttributedString addAttribute:
że nie miała zasięg i stosowane tylko atrybut do całego łańcucha, wydaje się nieco niedopatrzenia, że wszystkie modyfikacje do NSMutableAttributedString
wymagają określenia zakresu, czy czegoś brakuje?
NB:Kod zawiera zakodowane wartości, aby ułatwić czytelność.
// METHOD_001
NSMutableAttributedString *attrString_001 = [[NSMutableAttributedString alloc] initWithString:@"Distance 1720 mm" attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
[attrString_001 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 8)];
[[self nameLabel] setAttributedText:attrString_001];
// METHOD_002
NSString *string = @"Distance 1720 mm";
NSUInteger stringLength = [string length];
NSMutableAttributedString *attrString_002 = [[NSMutableAttributedString alloc] initWithString:string];
[attrString_002 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 8)];
[attrString_002 addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(9, (stringLength-9))];
[[self distanceLabel] setAttributedText:attrString_002];
Jeśli nie ma nic o nazwie METHOD_007, chciałbym iść z 001 –