我有一个这样的:
CALayer *layer = stripeButton.layer;
CAKeyframeAnimation *moveAnim = [CAKeyframeAnimation animationWithKeyPath:@"bounds.origin.y"];
moveAnim.duration = 3.35;
moveAnim.repeatCount = 0;
moveAnim.autoreverses = NO;
moveAnim.removedOnCompletion = NO;
moveAnim.calculationMode = kCAAnimationLinear;
moveAnim.fillMode = kCAFillModeForwards;
// ... keys and values here ...
[theLayer addAnimation:moveAnim forKey:@"theAnimation"];
你看这个动画持续了 3.35 秒。同时,可能会在 2 秒时启动具有相同键 @"theAnimation" 的新动画,但值不同。
发生了什么问题:新动画没有获取当前可见状态。从头开始很难。视图以一种丑陋的方式跳转到起始位置,然后新动画开始。对于 UIView,有一个 setAnimationsBeginFromCurrentState=YES,但我还没有找到类似 CAKeyFrameAnimation 的东西。任何的想法?