Eu tenho um controle deslizante para uma pesquisa que exibe as seguintes seqüências de caracteres com base no valor do controle deslizante: "Muito ruim, ruim, ok, bom, muito bom".
Aqui está o código para o controle deslizante:
- (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];
}
Quero que "Muito Ruim" seja vermelho, "Ruim" seja laranja, "Ok" seja amarelo, "Bom" e "Muito Bom" sejam verdes.
Eu não entendo como usar NSAttributedString
para fazer isso.
Respostas:
Não há necessidade de usar
NSAttributedString
. Tudo que você precisa é de uma etiqueta simples com a devidatextColor
. Além disso, esta solução simples funcionará com todas as versões do iOS, não apenas com o iOS 6.Mas se você deseja usar desnecessariamente
NSAttributedString
, pode fazer algo assim:fonte
NSAttributedString
para esta tarefa. Seria uma coisa se o texto do rótulo precisasse de vários atributos, mas não. O rótulo inteiro precisa ter uma cor de cada vez.NSAttributedString
. Então é isso que eles pediram. A verdadeira questão deveria ter sido "Como definir a cor do rótulo com base em seu valor" . Eu indiquei que a solução não requerNSAttributedString
e mostrou uma resposta muito mais simples. E o OP concordou em aceitar minha resposta muito mais simples. Se o OP realmente quisesseNSAttributedString
, eles não teriam aceitado minha resposta. Portanto, não há razão para os votos negativos. Respondi à verdadeira pergunta e o OP aceitou.NSForegroundColorAttributeName
chave, que eu tive dificuldade em encontrar nos documentos da Apple.Use algo parecido com isto (não compilado verificado)
fonte
No Swift 4 :
No Swift 3 :
Aproveitar.
fonte
Para o Swift 5:
Para o Swift 4:
Para o Swift 3:
fonte
Você pode criar
NSAttributedString
OU
NSMutableAttributedString
para aplicar atributos personalizados com intervalos.Atributos disponíveis: NSAttributedStringKey
ATUALIZAR:
Swift 5.1
fonte
Com o Swift 4,
NSAttributedStringKey
tem uma propriedade estática chamadaforegroundColor
.foregroundColor
tem a seguinte declaração:O seguinte código do Playground mostra como definir a cor do texto de uma
NSAttributedString
instância comforegroundColor
:O código abaixo mostra uma possível
UIViewController
implementação que se baseiaNSAttributedString
para atualizar o texto e a cor do texto de aUILabel
de aUISlider
:Note no entanto que você realmente não precisa usar
NSAttributedString
para tal um exemplo e pode simplesmente confiar emUILabel
'stext
etextColor
propriedades. Portanto, você pode substituir suaupdateDisplay()
implementação pelo seguinte código:fonte
Atualização para o Swift 4.2
fonte
Um forro para Swift:
fonte