Tengo un control deslizante para una encuesta que muestra las siguientes cadenas en función del valor del control deslizante: "Muy malo, malo, bueno, bueno, muy bueno".
Aquí está el código para el control 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];
}
Quiero que "Muy malo" sea rojo, "Malo" sea naranja, "Bien" sea amarillo, "Bueno" y "Muy bueno" sea verde.
No entiendo cómo usar NSAttributedStringpara hacer esto.

Respuestas:
No hay necesidad de usar
NSAttributedString. Todo lo que necesitas es una etiqueta simple con el correctotextColor. Además, esta solución simple funcionará con todas las versiones de iOS, no solo con iOS 6.Pero si necesita utilizarlo innecesariamente
NSAttributedString, puede hacer algo como esto:fuente
NSAttributedStringpara esta tarea. Sería una cosa si el texto de la etiqueta necesitara múltiples atributos pero no los necesita. Toda la etiqueta debe ser de un color a la vez.NSAttributedString. Entonces eso es lo que pidieron. La verdadera pregunta debería haber sido "Cómo configurar el color de la etiqueta en función de su valor" . Señalé que la solución no requiereNSAttributedStringy mostré una respuesta mucho más simple. Y el OP aceptó al aceptar mi respuesta mucho más simple. Si el OP realmente quisieraNSAttributedString, no habrían aceptado mi respuesta. Entonces no hay razón para los votos negativos. Respondí la verdadera pregunta y el OP aceptó.NSForegroundColorAttributeNameclave, que tuve dificultades para encontrar en los documentos de Apple.Use algo como esto (no está compilado)
fuente
En Swift 4 :
En Swift 3 :
Disfrutar.
fuente
Para Swift 5:
Para Swift 4:
Para Swift 3:
fuente
Puedes crear
NSAttributedStringO
NSMutableAttributedStringpara aplicar atributos personalizados con rangos.Atributos disponibles: NSAttributedStringKey
ACTUALIZAR:
Swift 5.1
fuente
Con Swift 4,
NSAttributedStringKeytiene una propiedad estática llamadaforegroundColor.foregroundColortiene la siguiente declaración:El siguiente código de Playground muestra cómo configurar el color del texto de una
NSAttributedStringinstancia conforegroundColor:El código siguiente muestra una posible
UIViewControlleraplicación que se basa enNSAttributedStringel objeto de actualizar el color del texto y el texto de unaUILabelde unaUISlider:Sin embargo, tenga en cuenta que realmente no necesita usarlo
NSAttributedStringpara tal ejemplo y simplemente puede confiar enUILabel'stextytextColorpropiedades. Por lo tanto, puede reemplazar suupdateDisplay()implementación con el siguiente código:fuente
Actualización para Swift 4.2
fuente
Un forro para Swift:
fuente