Estoy configurando un nuevo valor de texto a a UILabel
. Actualmente, el nuevo texto parece estar bien. Sin embargo, me gustaría agregar algo de animación cuando aparezca el nuevo texto. Me pregunto qué puedo hacer para animar la aparición del nuevo texto.
ios
objective-c
ipad
uilabel
caanimation
Joo Park
fuente
fuente
Respuestas:
Me pregunto si funciona, ¡y funciona perfectamente!
C objetivo
Swift 3, 4, 5
fuente
C objetivo
Para lograr una verdadera transición de disolución cruzada (la etiqueta anterior se desvanece mientras la etiqueta nueva se desvanece), no desea que el desvanecimiento se vuelva invisible. Resultaría en un parpadeo no deseado incluso si el texto no se modifica .
Utilice este enfoque en su lugar:
Ver también: ¿ Animar texto UILabel entre dos números?
Demostración en iOS 10, 9, 8:
Probado con Xcode 8.2.1 y 7.1 , ObjectiveC en iOS 10 a 8.0 .
► Para descargar el proyecto completo, busque SO-3073520 en Swift Recipes .
fuente
-addAnimation:forKey
a esa etiqueta, luego cambia el texto de la etiqueta.Swift 4
La forma correcta de desvanecer un UILabel (o cualquier UIView para el caso) es usar a
Core Animation Transition
. Esto no parpadeará, ni se desvanecerá a negro si el contenido no se modifica.Una solución portátil y limpia es usar un
Extension
en Swift (invocar antes de cambiar elementos visibles)La invocación se ve así:
► Encuentre esta solución en GitHub y detalles adicionales sobre Recetas Swift .
fuente
MIT
licencia garantiza que su Cocoapod puede ser utilizado libremente por todos y por cualquiera.desde iOS4 obviamente se puede hacer con bloques:
fuente
Aquí está el código para que esto funcione.
fuente
Solución de extensión UILabel
Función simplemente llamada por
Gracias por todos los consejos chicos. Espero que esto ayude a largo plazo
fuente
Versión Swift 4.2 de la solución de SwiftArchitect anterior (funciona muy bien):
Invocación:
fuente
Swift 2.0:
O
fuente
Con Swift 5, puede elegir uno de los dos ejemplos de código de Playground siguientes para animar los
UILabel
cambios de texto con alguna animación de disolución cruzada.# 1 Usando
UIView
eltransition(with:duration:options:animations:completion:)
método de clase# 2 El uso de
CATransition
yCALayer
'sadd(_:forKey:)
métodofuente
Solución Swift 4.2 (toma 4.0 respuestas y actualizaciones para nuevas enumeraciones para compilar)
fuente
Los valores predeterminados del sistema de 0.25 para
duration
y .curveEaseInEaseOut para atimingFunction
menudo son preferibles para la coherencia entre las animaciones, y se pueden omitir:que es lo mismo que escribir esto:
fuente
Este es un método de extensión C # UIView que se basa en el código de @ SwiftArchitect. Cuando el diseño automático está involucrado y los controles necesitan moverse según el texto de la etiqueta, este código de llamada usa la Supervisión de la etiqueta como la vista de transición en lugar de la etiqueta misma. Agregué una expresión lambda para la acción para hacerlo más encapsulado.
Código de llamada:
fuente
Si desea hacer esto
Swift
con retraso, intente esto:utilizando la siguiente función creada por @matt - https://stackoverflow.com/a/24318861/1982051 :
que se convertirá en esto en Swift 3
fuente
Hay una solución más para lograr esto. Fue descrito aquí . La idea es subclasificar
UILabel
y anular laaction(for:forKey:)
función de la siguiente manera:Ejemplos de uso:
fuente