CABasicAnimation back to its original position after it finishes its 1 cycle
animation, cabasicanimation, ios, objective-c
Solution
Have you tried this? (Edited)
moveAnimation.fillMode = .forwards
moveAnimation.isRemovedOnCompletion = false
EDIT As far as I can see you can also use `animateWithDuration` which has a completion block. Example would be:
CGRect rect = btnSpecialForListing.titleLabel.frame;
[UIView animateWithDuration:2.0 animations:^{
rect.origin.y = -7;
btnSpecialForListing.titleLabel.frame = rect;
} completion:^(BOOL finished){
[UIView animateWithDuration:3.5 animation:^{
rect.origin.x = -400;
btnSpecialForListing.titleLabel.frame = rect;
}];
}];
Problem
Don't refer CABasicAnimation returns to the original position before the next animation and Objective-C - CABasicAnimation applying changes after animation? and CABasicAnimation rotate returns to original position ,I have tried. The below code does: bottom->top->goes left->back to its original position. bottom->top->goes left->back to its original position. I need: bottom->top->goes left. bottom->top->goes left so on… ``` - (void)addUpDownAnimationForButton:(UILabel*)label { CABasicAnimation * bottomAnimation ; bottomAnimation =[CABasicAnimation animationWithKeyPath:@"transform.translation.y"]; [bottomAnimation setValue:@"animation1" forKey:@"id"]; bottomAnimation.delegate = self; [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:)]; bottomAnimation.duration = 2.0; bottomAnimation.fromValue = [NSNumber numberWithFloat:13]; bottomAnimation.toValue = [NSNumber numberWithFloat:-7]; bottomAnimation.repeatCount = 0; bottomAnimation.fillMode = kCAFillModeForwards; bottomAnimation.removedOnCompletion = NO; [btnSpecialForListing.titleLabel.layer addAnimation:bottomAnimation forKey:@"transform.translation.y"]; } - (void)animationDidStop:(CAAnimation *)theAnimation2 finished:(BOOL)flag { if([[theAnimation2 valueForKey:@"id"] isEqual:@"animation1"]) { CABasicAnimation *moveAnimation; moveAnimation=[CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; moveAnimation.duration=3.5; moveAnimation.repeatCount=0; moveAnimation.autoreverses=NO; moveAnimation.fromValue=[NSNumber numberWithFloat:0]; moveAnimation.toValue=[NSNumber numberWithFloat:-400]; moveAnimation.removedOnCompletion = NO; moveAnimation.fillMode = kCAFillModeRemoved; [btnSpecialForListing.titleLabel.layer addAnimation:moveAnimation forKey:@"transform.translation.x"]; } } ```