iphone - personajes - hacer animaciones 3d en android
¿Cómo hacer una animación flip entre más de dos UIViews? (4)
Apple tiene un buen tutorial sobre las transiciones de vista aquí . Además de la forma en que los implementan, también se puede utilizar un UINavigationController que gestiona un conjunto de vistas y la transición entre ellas.
Básicamente, debe gestionar la transición en la supervista en lugar de la vista: la supervista puede saber quién está mostrando actualmente y quién será el siguiente.
Tengo un código de animación en una clase que amplía UIView:
// Start Animation Block
CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:[self superview] cache:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];
//int nextView = currentView + 1;
// Animations
[[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
//And so I would do: [[self superview exchangeSubviewAtIndex:currentView withSubviewAtIndex:nextView];
//Doesn''t work because curentView is not global... with each instance of a class it''s reset to what it''s instanciated to.
//currentView++;
// Commit Animation Block
[UIView commitAnimations];
Este código de animación funciona bien para dos vistas. Pero estoy tratando de hacer esto para muchos puntos de vista. Intenté agregar una variable global (índice nextview e índice currentView), sin embargo, esto no funciona, ya que cada clase de vista personalizada tiene su propia instancia y estas variables no se comparten.
¿Alguien sabe cómo puedo lograr lo que quiero hacer?
¡Gracias!
Editar: Sería capaz de hacer esto, si pudiera usar [autoverview] para acceder al índice de la vista actual y de la próxima vista. ¿Hay algunos métodos para hacer esto?
Creo que una lista de puntos de vista vinculados podría ser lo que debería pensar en implementar.
Si tiene punteros a las vistas a las que intenta cambiar, simplemente llame a -removeFromSuperview en la vista "from" y -addSubview: (la vista "a") en la supervista. La transición no depende de ninguna llamada de método en particular; más o menos cualquier forma del enfoque "intercambiar dos vistas" se animará correctamente.
Para aquellos que encuentran esta pregunta, que son compatibles con iOS 4.0 y superior, Apple ha proporcionado una API integrada para esta tarea:
Ver: transitionFromView: toView: duration: options: completion: