CABasicAnimation完成1个周期后回到原来的位置

在下一个animation和Objective-C 之前不要将CABasicAnimation返回到原始位置 – animation之后应用更改的CABasicAnimation? 和CABasicAnimation旋转返回到我试过的原始位置 。

below code does,bottom->top->goes left->back to it's 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"]; } } 

任何帮助将不胜感激。 谢谢 !!

你尝试过吗?

 moveAnimation.fillMode = kCAFillModeForwards; moveAnimation.removedOnCompletion = NO; 

编辑据我所见,你也可以使用animateWithDuration有一个完成块。 例子是:

 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; }]; }];