Tengo el siguiente CATransition para un UIView llamado finalScoreView
, lo que hace que ingrese a la pantalla desde la parte superior:
CATransition *animation = [CATransition animation];
animation.duration = 0.2;
animation.type = kCATransitionPush;
animation.subtype = kCATransitionFromBottom;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
[gameOver.layer addAnimation:animation forKey:@"changeTextTransition"];
[finalScoreView.layer addAnimation:animation forKey:@"changeTextTransition"];
¿Cómo hago para que rebote una vez después de bajar y luego se quede quieto? Debería ingresar a la pantalla desde la parte superior, pero luego rebotar cuando baje.
Cualquier ayuda será muy apreciada, ¡gracias!
Respuestas:
Con iOS7 y UIKit Dynamics, ya no es necesario utilizar
CAKeyframeAnimations
oUIView
animaciones!Eche un vistazo a la aplicación UIKit Dynamics Catalog de Apple . Alternativamente, Teehanlax tiene un tutorial claro y conciso con el proyecto completo en github . Si desea un tutorial más detallado sobre los entresijos de la dinámica, el tutorial de Ray Winderlich es genial. Como siempre, los documentos de Apple son una excelente primera parada, así que consulte la referencia de la clase UIDynamicAnimator en los documentos.
Aquí hay un poco del código del tutorial de Teenhanlax:
Y aquí están los resultados
UIKit Dynamics es una adición realmente poderosa y fácil de usar a iOS7 y puede obtener una interfaz de usuario de excelente apariencia.
Otros ejemplos:
Los pasos para implementar la dinámica UIKit son siempre los mismos:
UIDynamicAnimator
y guárdelo en una propiedad sólidaUIDynamicBehaviors
. Cada comportamiento debe tener uno o más elementos, normalmente una vista para animar.UIDynamicBehaviors
es un estado válido dentro de laUIDynamicAnimator
simulación.fuente
UIDynamicItemBehavior
(que en realidad son propiedades, no comportamiento). No puede simplemente usar diferentes propiedades físicas en diferentes comportamientos. Otro caso es la implementación de límites de goma similares a UIScrollView; es muy complicado. Puedo escribir aún más, pero el comentario es demasiado corto.UIDynamicAnimator
y los objetos asociados con él, pero no responde cómo usarlosUna alternativa más simple que
UIDynamicAnimator
en iOS 7 es Spring Animation (una nueva y poderosa animación de bloques UIView), que puede brindarle un agradable efecto de rebote con amortiguación y velocidad: Objective CRápido
Swift 4.0
usingSpringWithDamping
0.0 == muy hinchable. 1.0 hace que desacelere suavemente sin sobrepasar.initialSpringVelocity
es, aproximadamente, "distancia deseada, dividida por segundos deseados". 1.0 corresponde a la distancia total de animación recorrida en un segundo. Por ejemplo, la distancia total de la animación es de 200 puntos y desea que el inicio de la animación coincida con una velocidad de visualización de 100 pt / s, utilice un valor de 0,5.Tutorial más detallado y aplicación de ejemplo se pueden encontrar en este tutorial . Espero que esto sea útil para alguien.
fuente
Aquí hay un proyecto de demostración que creé para ayudarlo a obtener la animación perfecta. ¡Disfrutar!
SpringDampingDemo
fuente
fuente