J'ai une tâche très simple, mais je ne peux pas comprendre CATransform3DRotate. J'ai 3 UIImageView avec une hauteur et une largeur égales, et j'ai besoin de définir une transformation pour les éléments gauche et droit pour le résultat suivant: https://dl.dropboxusercontent.com/u/15196617/result.png
Écran d'origine: https://dl.dropboxusercontent.com/u/15196617/original.png
Mes sources:
CATransform3D transform = CATransform3DIdentity;
transform.m34 = -1.f / self.prevItemImageView.bounds.size.width;
transform = CATransform3DRotate(transform, (CGFloat) -(M_PI / 3.f), 0, 1.f, 0);
self.prevItemImageView.layer.anchorPoint = CGPointMake(1.f, 0.5f);
self.prevItemImageView.layer.transform = transform;
transform = CATransform3DIdentity;
transform.m34 = -1.f / self.nextItemImageView.bounds.size.width;
transform = CATransform3DRotate(transform, (CGFloat) (M_PI / 3.f), 0, 0.5f, 0);
self.nextItemImageView.layer.anchorPoint = CGPointMake(0.f, 0.5f);
self.nextItemImageView.layer.transform = transform;
Ce n'est pas du travail.
Réponses:
3 pour la réponse № 1Ce que vous voulez faire, c'est appliquer la transformation avec altérée .m34
composant de la superposition de vos vues d’image, en tant que sublayerTransform
. C'est ce qui donne aux images une apparence de profondeur.
Cette image a commencé sa vie comme un carré. Mais il semble tourné en 3D car sa super-couche a une sublayerTransform
:
0 pour la réponse № 2
J'ai trouvé une solution pour ce type d'animation. S'il vous plaît vérifier ce lien
https://github.com/GlennChiu/GC3DFlipTransitionStyleSegue
Ceci peut être ajouté en utilisant des pods.
acceptez la réponse si cela fonctionne.