1

I want to implement a method to rotate a UIButton based on user inputs. Upon the first input, it should rotate 45 degrees to the left. Upon the second input, it should rotate for another 45degrees from the position it stopped after the first rotation.

But the button goes back to its very original position before starting the 2nd animation. Following is the method I use.

- (void)spinLayer:(CALayer *)inLayer duration:(CFTimeInterval)inDuration
        direction:(int)direction
{
    CABasicAnimation* rotationAnimation;

    // Rotate about the z axis
    rotationAnimation = 
    [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];

    // Rotate 360 degress, in direction specified
    rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 1/2 * direction];

    // Perform the rotation over this many seconds
    rotationAnimation.duration = inDuration;

    rotationAnimation.removedOnCompletion = NO;
    rotationAnimation.fillMode = kCAFillModeForwards;

    // Set the pacing of the animation
    rotationAnimation.timingFunction = 
    [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    // Add animation to the layer and make it so
    [inLayer addAnimation:rotationAnimation forKey:@"rotationAnimation"];


}
Maduranga E
  • 1,679
  • 5
  • 23
  • 37
  • possible duplicate of [CABasicAnimation rotate returns to original position](http://stackoverflow.com/questions/7683526/cabasicanimation-rotate-returns-to-original-position) – Max MacLeod Sep 20 '12 at 10:53

0 Answers0