J'ai un problème étrange avec CATransform3DMakeRotation. Lorsque la vue est tournée dans le centre du superview, il ressemble à ceci:Bizarre Perspective Avec CATransform3DMakeRotation
Voici comment il est censé regarder. Cependant, quand il est quelque part ailleurs dans le superview, par exemple, dans le coin inférieur gauche, il ressemble à ceci:
Notez qu'il est incliné vers la droite. La même chose se produit quand il est dans le coin inférieur droit, seulement qu'il s'incline vers la gauche. Y at-il un moyen de l'incliner comme il le devrait tout le temps et dans toutes les positions? Le code pour réaliser cette transformation est la suivante:
CALayer *layer = view.layer;
CATransform3D aTransform = CATransform3DIdentity;
float zDistance = 1000;
aTransform.m34 = 1.0/-zDistance;
self.view.layer.sublayerTransform = aTransform;
CABasicAnimation *rotateAnim = [CABasicAnimation animationWithKeyPath:@"transform"];
rotateAnim.fromValue= [NSValue valueWithCATransform3D:CATransform3DMakeRotation(0, 0, 0, 0)];
rotateAnim.duration=0.12;
rotateAnim.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeRotation(20*M_PI/180, 1, 0, 0)];
rotateAnim.removedOnCompletion = NO;
rotateAnim.fillMode = kCAFillModeForwards;
[layer addAnimation:rotateAnim forKey:@"rotateAnim"];
Vous ne construisez probablement pas correctement votre CATransform3D, probablement en oubliant que la translation et la rotation s'influencent mutuellement. Publiez le code que vous utilisez pour générer la transformation. –
@RobNapier Inclus le code – kopproduction