CALayer with rotation animation
13,918
To rotate a CALayer
:
NSNumber *rotationAtStart = [myLayer valueForKeyPath:@"transform.rotation"];
CATransform3D myRotationTransform = CATransform3DRotate(myLayer.transform, myRotationAngle, 0.0, 0.0, 1.0);
myLayer.transform = myRotationTransform;
CABasicAnimation *myAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
myAnimation.duration = kMyAnimationDuration;
myAnimation.fromValue = rotationAtStart;
myAnimation.toValue = [NSNumber numberWithFloat:([rotationAtStart floatValue] + myRotationAngle)];
[myLayer addAnimation:myAnimation forKey:@"transform.rotation"];
myRotationAngle
should be in radians. Use negative values for counter-clockwise rotation and positive values for clockwise.
Related videos on Youtube
Author by
Alex
Updated on June 07, 2022Comments
-
Alex almost 2 years
I have masked an image like this:
UIView *maskImage; maskImage = [[UIView alloc] init]; maskImage.backgroundColor = UIColorFromRGB(FTRMaskColor); maskImage.frame = newFrame; CALayer *theLayer = [CALayer layer]; theLayer.contents = (id)[[UIImage imageNamed:@"image.png"] CGImage]; theLayer.frame = newFrame; maskImage.layer.mask = theLayer;
It works fine but the main problem is if I want to rotate the my Ipad, the rotation animation of the view or the layer (I'm not very sure) doesn't work. It rotates without animation. Could you help, please?