Sie können eine Schicht durch eine (oder mehrere) volle Umdrehungen um seine Z-Achse animieren durch die Schicht des transform.rotation
Schlüsselpfad Animieren, wie folgt aus:
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
animation.duration = .25;
animation.fromValue = [NSNumber numberWithFloat:0];
animation.toValue = [NSNumber numberWithFloat:2 * M_PI];
[layer addAnimation:animation forKey:animation.keyPath];
Sie um die X- oder Y-Achsen animieren Verwenden der Schlüsselpfade transform.rotation.x
und transform.rotation.y
. (Der Schlüsselpfad transform.rotation.z
hat dieselbe Wirkung wie der Schlüsselpfad transform.rotation
.) Sie können mehrere Rotationen gleichzeitig auf separaten Achsen anwenden.
Eine andere Möglichkeit, es zu tun, was wahrscheinlich besser funktioniert, wenn Sie einen außeraxialen Vektor drehen, um wollen, ist eine Keyframe-Animation verwendet wird, wie folgt aus:
CALayer *layer = [sender layer];
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0/-50;
layer.transform = transform;
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
animation.values = [NSArray arrayWithObjects:
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 0 * M_PI/2, 100, 1, 100)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 1 * M_PI/2, 100, 1, 100)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 2 * M_PI/2, 100, 1, 100)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 3 * M_PI/2, 100, 1, 100)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 4 * M_PI/2, 100, 1, 100)],
nil];
animation.duration = 2;
[layer addAnimation:animation forKey:animation.keyPath];
Versuchen Sie, 180 oder 360 Grad drehen ? Weil ich denke, dass das Drehen um 360 Grad das Gleiche ist, als wenn man überhaupt nicht rotiert. – htinlinn
@htinlinn Ich denke, er versucht, seine Schicht durch eine volle 360-Grad-Drehung zu animieren. –
@robmayoff ah. OK. – htinlinn