Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS Animate Rotation at an Angle

I'm trying to do a 360 spin of a view but at a 45 degree tilt.

Like this

enter image description here

I can't figure out for to do it.

So far I've managed this

CABasicAnimation* animation = [CABasicAnimation
                               animationWithKeyPath:@"transform.rotation.y"];
animation.fromValue = @(0);
animation.toValue = @(2 * M_PI);
animation.duration = 1;

[self.layer addAnimation:animation forKey:@"rotation"];

Which spins it on it's y axis, but what I want is for this Y axis to be tilted 45 degree before it's spun.

like image 643
Mark Bridges Avatar asked Oct 20 '22 10:10

Mark Bridges


1 Answers

First, you should see the link below which explains that the differences between "frame" and "bounds". UIView frame, bounds and center

And now, here is my answer.

/* add the 4 lines below */
self.transform = CGAffineTransformMakeRotation(M_PI_4);
self.layer.bounds = CGRectMake(0.0f, 0.0f, 60.0f, 200.0f);
self.layer.position = CGPointMake(150.0f, 300.0f);

CABasicAnimation* animation = [CABasicAnimation
                               animationWithKeyPath:@"transform.rotation.y"];
animation.fromValue = @(0);
animation.toValue = @(2 * M_PI);
animation.duration = 1;

[self.layer addAnimation:animation forKey:@"rotation"];
like image 88
ryutamaki Avatar answered Oct 23 '22 01:10

ryutamaki