Quiero aplicar una animación a dos UIImageViews. La idea es que la imagen uno se voltee 90 grados horizontalmente y luego la imagen dos para completar la rotación. Piense en ello como una moneda girando: el lado de la cabeza (imagen uno) mira hacia adelante -> gira 90 grados -> el lado de la cola (imagen dos) gira hacia adelante. Puedo hacer la primera mitad de la animación, pero estoy atascado en la segunda.

[UIView animateWithDuration:1.0f animations:^{
    image1.transform = CGAffineTransformMakeScale(-0.01, 1);
} completion: ^(BOOL finished) {
    // How can I make image 2 to rotate out as if it initially was already rotated by 90 degrees?
}];
1
Allin1969 31 ago. 2016 a las 08:32

2 respuestas

La mejor respuesta

Para voltear la animación, hay una opción de animación llamada UIViewAnimationOptionTransitionFlipFromRight, úsela con el método de animación UIView's, por ejemplo, como a continuación, por ejemplo

 [UIView transitionWithView:myImageView //with first image
                  duration:animationDuration
                   options:UIViewAnimationOptionTransitionFlipFromRight
                animations:^{
                    myImageView.image = toImage; //to next image
                } completion:^(BOOL finished) {
             //completion actions after flipped
 }];

También hay otras opciones de animación, como FromLeft, FromTop, FromBottom utilice cualquiera para sus necesidades

0
Shankar BS 16 sep. 2016 a las 05:17

Eche un vistazo a esta pregunta sobre cómo invertir una vista UIV en 3D con CATransform3D.

Transformación 3D de Simple Core Animations de UIView

La respuesta:

CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -1000.0;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, M_PI * 0.6, 1.0f, 0.0f, 0.0f);
[UIView animateWithDuration:1.0 animations:^{
    self.someView.layer.anchorPoint = CGPointMake(0.5, 0);
    self.someView.layer.transform = rotationAndPerspectiveTransform;
} completion:^(BOOL finished){
    // code to be executed when flip is completed
}];
0
Community 23 may. 2017 a las 12:00