У меня есть ползунок для опроса, который отображает следующие строки в зависимости от значения ползунка: «Очень плохо, плохо, хорошо, хорошо, очень хорошо».
Вот код для слайдера:
- (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];
}
Я хочу, чтобы «Очень плохо» было красным, «Плохо» - оранжевым, «Хорошо» - желтым, «Хорошо» и «Очень хорошо» - зеленым.
Я не понимаю, как использовать, NSAttributedString
чтобы сделать это.
Ответы:
Нет необходимости в использовании
NSAttributedString
. Все, что вам нужно, это простая этикетка с соответствующимtextColor
. Плюс это простое решение будет работать со всеми версиями iOS, а не только с iOS 6.Но если вы без необходимости хотите использовать
NSAttributedString
, вы можете сделать что-то вроде этого:источник
NSAttributedString
для этой задачи. Было бы одно, если бы текст метки нуждался в нескольких атрибутах, но это не так. Вся этикетка должна быть одного цвета за раз.NSAttributedString
. Так вот что они просили. Реальный вопрос должен был быть «Как установить цвет метки на основе ее значения» . Я указал, что решение не требуетNSAttributedString
и показал гораздо более простой ответ. И ОП согласился, приняв мой гораздо более простой ответ. Если бы ОП действительно хотелNSAttributedString
, они бы не приняли мой ответ. Так что нет причин для отрицательных голосов. Я ответил на истинный вопрос и ОП принял.NSForegroundColorAttributeName
ключ, который мне было трудно найти в документации Apple.Используйте что-то вроде этого (не проверено компилятором)
источник
В Swift 4 :
В Swift 3 :
Наслаждаться.
источник
Для Swift 5:
Для Swift 4:
Для Swift 3:
источник
Вы можете создать
NSAttributedString
ИЛИ
NSMutableAttributedString
применять пользовательские атрибуты с помощью диапазонов.Доступные атрибуты: NSAttributedStringKey
ОБНОВИТЬ:
Swift 5.1
источник
В Swift 4
NSAttributedStringKey
имеет статическое свойство с именемforegroundColor
.foregroundColor
имеет следующую декларацию:Следующий код Playground показывает, как установить цвет текста
NSAttributedString
экземпляра с помощьюforegroundColor
:В приведенном ниже коде показана возможная
UIViewController
реализация, которая используетсяNSAttributedString
для обновления текста и цвета текста aUILabel
из aUISlider
:Тем не менее, обратите внимание, что вам не нужно использовать
NSAttributedString
для такого примера, и вы можете просто полагаться наUILabel
stext
иtextColor
свойства. Поэтому вы можете заменить своюupdateDisplay()
реализацию следующим кодом:источник
Обновление для Swift 4.2
источник
Один лайнер для Swift:
источник