diff --git a/AXAnimationChain/Classes/CoreAnimation/CAAnimation+Convertable.h b/AXAnimationChain/Classes/CoreAnimation/CAAnimation+Convertable.h index d30f592..eb29c54 100644 --- a/AXAnimationChain/Classes/CoreAnimation/CAAnimation+Convertable.h +++ b/AXAnimationChain/Classes/CoreAnimation/CAAnimation+Convertable.h @@ -40,7 +40,7 @@ NS_ASSUME_NONNULL_BEGIN + (nullable instancetype)animationWithBasic:(nullable CABasicAnimation *)basicAnimation; /// Convert animation from CABasicAnimation using custom values function. /// -+ (nullable instancetype)animationWithBasic:(nullable CABasicAnimation *)basicAnimation usingValuesFunction:(nullable double (^)(double t, double b, double c, double d))valuesFunction; ++ (nullable instancetype)animationWithBasic:(nullable CABasicAnimation *)basicAnimation usingValuesFunction:(CAKeyframeValuesFunction _Nullable)valuesFunction; /// Convert animation from SpringAnimation. /// /// @param animation spring animation to convert. diff --git a/AXAnimationChain/Classes/CoreAnimation/CAAnimation+Convertable.m b/AXAnimationChain/Classes/CoreAnimation/CAAnimation+Convertable.m index addc77e..0296cee 100644 --- a/AXAnimationChain/Classes/CoreAnimation/CAAnimation+Convertable.m +++ b/AXAnimationChain/Classes/CoreAnimation/CAAnimation+Convertable.m @@ -308,7 +308,7 @@ id CalculateToValueWithByValue(id value, id byValue, BOOL plus) { } @implementation CAKeyframeAnimation (Convertable) -+ (instancetype)animationWithBasic:(CABasicAnimation *)basicAnimation usingValuesFunction:(double (^)(double, double, double, double))valuesFunction { ++ (instancetype)animationWithBasic:(CABasicAnimation *)basicAnimation usingValuesFunction:(CAKeyframeValuesFunction)valuesFunction { if (!basicAnimation) return nil; CAKeyframeAnimation *keyframe = [CAKeyframeAnimation animation]; keyframe.beginTime = basicAnimation.beginTime; @@ -476,6 +476,11 @@ + (instancetype)animationWithBasic:(CABasicAnimation *)animation { @end @implementation AXDecayAnimation (Convertable) ++ (instancetype)animationWithBasic:(CABasicAnimation *)basicAnimation usingValuesFunction:(CAKeyframeValuesFunction)valuesFunction { + if (!basicAnimation || ![basicAnimation isKindOfClass:CAKeyframeAnimation.class]) return nil; + return [super animationWithBasic:basicAnimation usingValuesFunction:valuesFunction]; +} + + (instancetype)animationWithSpring:(AXCASpringAnimation *)animation { return [self animationWithBasic:animation]; }