Animation de base animant le calque à returnner horizontalement

J'ai deux vues et je veux basculer entre les deux vue en utilisant l'animation de base, l'animation de la couche de chacune des vues. L'animation que je veux est similaire à celle fournie par UIViewAnimationOptionTransitionFlipFromLeft mais je n'ai pas réussi à le faire. Je pourrais faire pivoter le calque 180 et ensuite, lorsque l'animation s'arrêterait, je passerais à la vue suivante. Comment cela peut-il être fait?

J'ai utilisé le code comme ci-dessous:

 CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"]; self.view.layer.zPosition = 100; CATransform3D transform = CATransform3DMakeRotation(M_PI, 0, 1, 0); [animation setToValue:[NSValue valueWithCATransform3D:transform]]; [animation setDuration:.5]; [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]]; [animation setFillMode:kCAFillModeForwards]; [animation setRemovedOnCompletion:YES]; [animation setDelegate:self]; [self.view.layer addAnimation:animation forKey:@"test"]; 

et dans le délégué, je passe à la vue suivante. Mais cela n'a pas beaucoup de sens et l'animation n'est pas aussi vivante que celle fournie par l'animation par défaut. Comment cela peut il etre accompli?

Comment faire pour ressembler à une rotation 3D

Votre rotation ne semble pas se produire dans l'espace 3D car il n'y a pas de perspective sur votre transformation. Changer la valeur m34 de la transformation en quelque chose de petit comme 1.0 / 800.0 et vous devriez le voir tourner avec perspective.

 CATransform3D transform = CATransform3DMakeRotation(M_PI, 0, 1, 0); transform.m34 = 1.0/800.0; [animation setToValue:[NSValue valueWithCATransform3D:transform]]; 

Cette valeur (troisième colonne, quasortingème rangée) de la transformation 3D contrôle la perspective de la transformation. Vous pouvez en savoir plus sur la projection 3D sur Wikipedia si vous voulez en savoir plus sur comment cela fonctionne.

Comment returnner deux vues comme si elles étaient aux côtés d'une carte

Pour avoir l'printing que les deux vues sont les deux côtés de la même vue, vous devez les append en faisant pivoter le côté arrière de π degrés et changer la propriété doubleSided du doubleSided en NO pour les deux calques. Maintenant, ils ne seront pas visibles en face de vous. Lorsque vous appliquez la rotation aux couches avant et arrière, elles changent quelle couche est visible. Remarque: tournez le devant à π degrés et le dos à 2π de sorte qu'il complète la rotation et vous fait face.

tu pourrais utiliser

  [UIView transitionFromView:aView toView:bView duration:0.3 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) { } ]; 

Je trouve que vous voulez avoir les deux vues dans le même super-vue sinon les choses deviennent un peu brouillon.