CABasicAnimation resets to initial value after animation completes CABasicAnimation resets to initial value after animation completes ios ios

CABasicAnimation resets to initial value after animation completes


Here's the answer, it's a combination of my answer and Krishnan's.

cabasicanimation.fillMode = kCAFillModeForwards;cabasicanimation.removedOnCompletion = NO;

The default value is kCAFillModeRemoved. (Which is the reset behavior you're seeing.)


The problem with removedOnCompletion is the UI element does not allow user interaction.

I technique is to set the FROM value in the animation and the TO value on the object.The animation will auto fill the TO value before it starts, and when it's removed will leave the object at it's correct state.

// fade inCABasicAnimation *alphaAnimation = [CABasicAnimation animationWithKeyPath: @"opacity"];alphaAnimation.fillMode = kCAFillModeForwards;alphaAnimation.fromValue = NUM_FLOAT(0);self.view.layer.opacity = 1;[self.view.layer addAnimation: alphaAnimation forKey: @"fade"];


Set the following property:

animationObject.removedOnCompletion = NO;