Mam suwak ankiety, który wyświetla następujące ciągi znaków w oparciu o wartość suwaka: „Bardzo zły, zły, ok, dobry, bardzo dobry”.
Oto kod suwaka:
- (IBAction) sliderValueChanged:(UISlider *)sender {
scanLabel.text = [NSString stringWithFormat:@" %.f", [sender value]];
NSArray *texts=[NSArray arrayWithObjects:@"Very Bad", @"Bad", @"Okay", @"Good", @"Very Good", @"Very Good", nil];
NSInteger sliderValue=[sender value]; //make the slider value in given range integer one.
self.scanLabel.text=[texts objectAtIndex:sliderValue];
}
Chcę, aby „Bardzo zły” był czerwony, „Zły” był pomarańczowy, „W porządku” był żółty, „Dobrze” i „Bardzo dobrze” był zielony.
Nie rozumiem, jak użyć, NSAttributedString
aby to zrobić.
Odpowiedzi:
Nie ma potrzeby używania
NSAttributedString
. Wystarczy prosta etykieta z odpowiedniątextColor
. Dodatkowo to proste rozwiązanie będzie działać ze wszystkimi wersjami iOS, nie tylko iOS 6.Ale jeśli niepotrzebnie chcesz użyć
NSAttributedString
, możesz zrobić coś takiego:źródło
NSAttributedString
z tego zadania. Byłoby jedno, gdyby tekst etykiety wymagał wielu atrybutów, ale tak nie jest. Cała etykieta musi mieć jeden kolor na raz.NSAttributedString
. Więc o to prosili. Prawdziwe pytanie powinno brzmieć „Jak ustawić kolor etykiety na podstawie jej wartości” . Zwróciłem uwagę, że rozwiązanie nie wymagaNSAttributedString
i pokazałem dużo prostszą odpowiedź. OP zgodził się, akceptując moją znacznie prostszą odpowiedź. Gdyby OP naprawdę chciałNSAttributedString
, nie zaakceptowaliby mojej odpowiedzi. Nie ma więc powodu do głosów przeciw. Odpowiedziałem na prawdziwe pytanie i PO został zaakceptowany.NSForegroundColorAttributeName
klucz, który trudno mi było znaleźć w dokumentacji Apple.Użyj czegoś takiego (nie zaznaczono kompilatora)
źródło
W Swift 4 :
W Swift 3 :
Cieszyć się.
źródło
Dla Swift 5:
Dla Swift 4:
Dla Swift 3:
źródło
Możesz tworzyć
NSAttributedString
LUB
NSMutableAttributedString
zastosować atrybuty niestandardowe w zakresach.Dostępne atrybuty: NSAttributedStringKey
AKTUALIZACJA:
Swift 5.1
źródło
W Swift 4
NSAttributedStringKey
ma statyczną właściwość o nazwieforegroundColor
.foregroundColor
posiada następującą deklarację:Poniższy kod Playground pokazuje, jak ustawić kolor tekstu
NSAttributedString
wystąpienia za pomocąforegroundColor
:Poniższy kod przedstawia możliwą
UIViewController
implementację, która polega naNSAttributedString
aktualizacji tekstu i koloru tekstu aUILabel
zUISlider
:Należy jednak pamiętać, że tak naprawdę nie trzeba używać
NSAttributedString
takiego przykładu, a może po prostu polegać naUILabel
„stext
itextColor
właściwości. Dlatego możesz zastąpić swojąupdateDisplay()
implementację następującym kodem:źródło
Aktualizacja dla Swift 4.2
źródło
Jedna wkładka dla Swift:
źródło