feat:add TimingFunction for iOS

This commit is contained in:
pengfei.zhou
2019-12-02 19:59:11 +08:00
parent 93bb374a94
commit 35fe6c41d5
4 changed files with 118 additions and 8 deletions

View File

@@ -454,6 +454,9 @@ - (CAAnimation *)parseAnimation:(id)params {
}];
animation.fromValue = [NSValue valueWithCGPoint:from];
animation.toValue = [NSValue valueWithCGPoint:to];
if (params[@"timingFunction"]) {
animation.timingFunction = [self translateToTimingFunction:params[@"timingFunction"]];
}
[self setAnimation:animation params:params];
return animation;
} else {
@@ -462,6 +465,9 @@ - (CAAnimation *)parseAnimation:(id)params {
[changeables forEach:^(NSDictionary *obj) {
CABasicAnimation *animation = [self parseChangeable:obj fillMode:params[@"fillMode"]];
if (params[@"timingFunction"]) {
animation.timingFunction = [self translateToTimingFunction:params[@"timingFunction"]];
}
[animations addObject:animation];
}];
animationGroup.animations = animations;
@@ -603,16 +609,18 @@ - (CABasicAnimation *)parseChangeable:(NSDictionary *)params fillMode:(NSNumber
return animation;
}
- (CAMediaTimingFillMode)translateToFillMode:(NSNumber *)fillMode {
switch ([fillMode integerValue]) {
- (CAMediaTimingFunction *)translateToTimingFunction:(NSNumber *)timingFunction {
switch (timingFunction.integerValue) {
case 1:
return kCAFillModeForwards;
return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
case 2:
return kCAFillModeBackwards;
return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
case 3:
return kCAFillModeBoth;
return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
case 4:
return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
default:
return kCAFillModeRemoved;
return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];
}
}