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 NSAttributedString
para 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
NSAttributedString
para 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 requiereNSAttributedString
y 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ó.NSForegroundColorAttributeName
clave, 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
NSAttributedString
O
NSMutableAttributedString
para aplicar atributos personalizados con rangos.Atributos disponibles: NSAttributedStringKey
ACTUALIZAR:
Swift 5.1
fuente
Con Swift 4,
NSAttributedStringKey
tiene una propiedad estática llamadaforegroundColor
.foregroundColor
tiene la siguiente declaración:El siguiente código de Playground muestra cómo configurar el color del texto de una
NSAttributedString
instancia conforegroundColor
:El código siguiente muestra una posible
UIViewController
aplicación que se basa enNSAttributedString
el objeto de actualizar el color del texto y el texto de unaUILabel
de unaUISlider
:Sin embargo, tenga en cuenta que realmente no necesita usarlo
NSAttributedString
para tal ejemplo y simplemente puede confiar enUILabel
'stext
ytextColor
propiedades. 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