Por alguna razón, cuando intento animar textColor, no funciona. El textColor simplemente cambia repentinamente de A a B. ¿Es posible animarlo, digamos de rojo a negro?Cómo animar la propiedad textColor de un UILabel?
Respuesta
La propiedad textColour no se especifica que es animateable en la documentación, por lo que no creo que se puede hacer con un simple UIView bloquean animaciones ...
Esto probablemente se podría hacer bastante toscamente con un NSTimer
disparando cada dos milisegundos, cada vez ajustando el color gradualmente de uno a otro.
Digo que es crudo porque requeriría una matriz o algún otro contenedor de valores de color preestablecidos desde el color inicial hasta el final, y estoy seguro de que hay una forma de hacerlo con animación central o algo , Simplemente no sé lo que es.
usted podría intentar crear otra instancia de la UILabel o lo que sea que tiene el textColor, y luego aplicar la animación entre esos dos casos (el con el viejo textColor y el que tiene el nuevo textColor).
El motivo por el que textColor no es animable es que UILabel utiliza un CALayer normal en lugar de un CATextLayer.
Para que textoColor sea animable (así como texto, fuente, etc.) podemos subclase UILabel para que use CATextLayer.
Este es un buen montón de trabajo, pero por suerte yo ya hice :-)
puede encontrar una explicación completa + una gota en el reemplazo de código abierto para UILabel en este article
¡sí se ve genial, mucho! – Nils
encontré es bastante fácil colocar una UIView debajo de la etiqueta y animar su opacidad. La etiqueta debe agregarse a esa vista. Quizás no sea una buena solución desde el punto de vista del consumo de recursos, pero es bastante sencilla.
En su lugar, ¿Ha intentado utilizar una transición de fundido en el propio objeto de este tipo, que va a darle un buen efecto de desaparición de desaparición gradual de un color a otro:
[UIView transitionWithView:myLabel duration:0.25 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
myLabel.textColor = NEW_COLOR;
} completion:^(BOOL finished) {
}];
Esto es mejor que usar NSTimers, CATextLayers, etc. por varias razones. CATextLayer no tiene soporte adecuado para el kerning de texto o NSAttributedText, y los NSTimers son laggy (además de que hay demasiado código). La animación de transición de arriba hace el truco, y también se puede usar en una animación en cadena. Tuve el mismo problema y ya he probado las soluciones anteriores, pero este código simple funciona de maravilla.
Agradable, elegante, en realidad la mejor y más limpia solución. – maksa
Genial. Funciona en Swift de la misma manera: 'UIView.transitionWithView (creditsLabel, duration: 0.3, options: .TransitionCrossDissolve, animaciones: {self.creditsLabel.textColor = UIColor.redColor()}, finalización: nil)' – SimplGy
¡Genial! Gracias. ¡sencillo! – Itzdsp
Aquí está mi código para animar el color del texto de la etiqueta. La parte importante es establecer textColor a clearColor antes de la animación
label.textColor = [UIColor clearColor];
[UIView transitionWithView:label duration:duration/4 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
label.textColor = self.highlightedCellPrimaryTextColor;
} completion:^(BOOL finished) { }];
Swift solución 4:
UIView.transition(with: yourLabel, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.yourLabel.textColor = .red
}, completion: nil)
actualiza rápida 3.0
acabo de cambiar de @budidino comentarios
UIView.transition(with: my.label, duration: 0.3, options: .transitionCrossDissolve, animations: { my.label.textColor = .black }, completion: nil)
- 1. ¿Animar a UILabel pulsante?
- 2. Cómo animar el color de fondo de un UILabel?
- 3. Cómo animar un UIBezierPath
- 4. Cómo establecer un CGFloat en la propiedad de texto de UILabel
- 5. Animar la propiedad 'Estilo' de Control utilizando ObjectAnimationUsingKeyFrames en WPF
- 6. Animar una propiedad personalizada de la subclase CALayer
- 7. Cómo animar un favicon?
- 8. Cómo puedo animar una propiedad UIButton Alpha con MonoTouch
- 9. ¿Animar el elemento WPF en XAML usando la propiedad adjunta?
- 10. Animación de UILabel con CoreAnimation/QuartzCore en la aplicación iOS
- 11. uilabel con contorno o trazo
- 12. Cómo establecer TextColor usando SetTextColor (colores) ColorsStateList
- 13. En jQuery, ¿cómo puedo animar la propiedad de CSS de "altura máxima"?
- 14. Cómo hacer un ajuste de palabra UILabel
- 15. Cómo animar un diagrama de dispersión?
- 16. Cómo animar el dibujo de un CGPath?
- 17. Marco de Autoreizing de UILabel al animar el marco (tamaño) del UIView padre
- 18. Android: animar un rectángulo
- 19. Animar un MKOverlayView
- 20. Cómo animar la traducción de una vista
- 21. Obtener ancho de la última línea de UILabel UILabel
- 22. Cómo animar la opacidad de un efecto DropShadow?
- 23. ¿Configurando el texto de un UILabel en un int?
- 24. Cómo animar el fondo de un bloque de texto al cambiar el valor de la propiedad enlazada?
- 25. Cómo dibujar un UILabel en -drawRect :?
- 26. ¿cómo se reemplaza por un setFrame UILabel
- 27. Animar
- 28. ¿Cómo agregar relleno a un UILabel?
- 29. configuración android: textColor usando dibujable programáticamente?
- 30. UILabel - cómo cambiar la posición del texto
o: una función que lanza hacia fuera una matriz con valores RGB entre A y B y un porcentaje dado. Sin embargo, no sé nada sobre los algoritmos de color. – dontWatchMyProfile
aquí hay buenas soluciones: [aquí] (http://stackoverflow.com/questions/6442774/is-uilabels-backgroundcolor-not-animatable/6442868#6442868) y [aquí] (http://stackoverflow.com/a/3947389/1076848) gracias a Anna Karenina – jackal
Debe usar 'CADisplayLink' en lugar de' NSTimer' para controlar manualmente las animaciones porque está sincronizado con las actualizaciones de pantalla. Ver [WWDC 2014 Session 236: Construir Interacciones Interrumpibles y Sensibles] (https://developer.apple.com/videos/play/wwdc2014-236/) alrededor de las 13:00. –