From dbf4d1fcb2f9bccad323c4bca4204fca1fabdf4b Mon Sep 17 00:00:00 2001 From: "ronghui.zrh" Date: Tue, 8 Mar 2022 15:31:37 +0800 Subject: [PATCH] init, upload iOS --- .gitignore | 15 + README.md | 96 ++++ README_en.md | 90 +++ docs/assets/accelerate.gif | Bin 0 -> 77910 bytes docs/assets/anticipate.gif | Bin 0 -> 62994 bytes docs/assets/bounce.gif | Bin 0 -> 67936 bytes docs/assets/cosine.gif | Bin 0 -> 69204 bytes docs/assets/decelerate.gif | Bin 0 -> 64228 bytes docs/assets/linear.gif | Bin 0 -> 81293 bytes docs/assets/overshoot.gif | Bin 0 -> 56677 bytes docs/assets/spring.gif | Bin 0 -> 48344 bytes docs/assets/standard.gif | Bin 0 -> 77716 bytes docs/en-US/accelerate.md | 93 ++++ docs/en-US/anticipate.md | 104 ++++ docs/en-US/bounce.md | 89 +++ docs/en-US/cosine.md | 89 +++ docs/en-US/decelerate.md | 93 ++++ docs/en-US/linear.md | 46 ++ docs/en-US/overshoot.md | 106 ++++ docs/en-US/spring.md | 132 +++++ docs/en-US/standard.md | 93 ++++ docs/zh-CN/accelerate.md | 93 ++++ docs/zh-CN/anticipate.md | 104 ++++ docs/zh-CN/bounce.md | 89 +++ docs/zh-CN/cosine.md | 89 +++ docs/zh-CN/decelerate.md | 93 ++++ docs/zh-CN/linear.md | 46 ++ docs/zh-CN/overshoot.md | 104 ++++ docs/zh-CN/spring.md | 132 +++++ docs/zh-CN/standard.md | 93 ++++ src/iOS/GaiaMotionCurve.podspec | 17 + .../GaiaMotionCurve.xcodeproj/project.pbxproj | 512 ++++++++++++++++++ .../GaiaMotionCurve/CALayer+GaiaMotionCurve.h | 53 ++ .../GaiaMotionCurve/CALayer+GaiaMotionCurve.m | 285 ++++++++++ src/iOS/GaiaMotionCurve/GMCDefines.h | 38 ++ src/iOS/GaiaMotionCurve/GMCFunctions.h | 53 ++ src/iOS/GaiaMotionCurve/GMCFunctions.m | 208 +++++++ src/iOS/GaiaMotionCurve/GMCHelper.h | 42 ++ src/iOS/GaiaMotionCurve/GMCHelper.m | 363 +++++++++++++ src/iOS/GaiaMotionCurve/GMCModel+Internal.h | 105 ++++ src/iOS/GaiaMotionCurve/GMCModel+Internal.m | 79 +++ src/iOS/GaiaMotionCurve/GMCModel.h | 88 +++ src/iOS/GaiaMotionCurve/GMCModel.m | 169 ++++++ src/iOS/GaiaMotionCurve/GaiaMotionCurve.h | 32 ++ src/iOS/GaiaMotionCurve/NSValue+GMCCGFloat.h | 29 + src/iOS/GaiaMotionCurve/NSValue+GMCCGFloat.m | 33 ++ src/iOS/GaiaMotionCurve/NSValue+GMCUIColor.h | 32 ++ src/iOS/GaiaMotionCurve/NSValue+GMCUIColor.m | 30 + .../GaiaMotionCurveTests.m | 36 ++ src/iOS/Podfile | 7 + 50 files changed, 4100 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 README_en.md create mode 100644 docs/assets/accelerate.gif create mode 100644 docs/assets/anticipate.gif create mode 100644 docs/assets/bounce.gif create mode 100644 docs/assets/cosine.gif create mode 100644 docs/assets/decelerate.gif create mode 100644 docs/assets/linear.gif create mode 100644 docs/assets/overshoot.gif create mode 100644 docs/assets/spring.gif create mode 100644 docs/assets/standard.gif create mode 100644 docs/en-US/accelerate.md create mode 100644 docs/en-US/anticipate.md create mode 100644 docs/en-US/bounce.md create mode 100644 docs/en-US/cosine.md create mode 100644 docs/en-US/decelerate.md create mode 100644 docs/en-US/linear.md create mode 100644 docs/en-US/overshoot.md create mode 100644 docs/en-US/spring.md create mode 100644 docs/en-US/standard.md create mode 100644 docs/zh-CN/accelerate.md create mode 100644 docs/zh-CN/anticipate.md create mode 100644 docs/zh-CN/bounce.md create mode 100644 docs/zh-CN/cosine.md create mode 100644 docs/zh-CN/decelerate.md create mode 100644 docs/zh-CN/linear.md create mode 100644 docs/zh-CN/overshoot.md create mode 100644 docs/zh-CN/spring.md create mode 100644 docs/zh-CN/standard.md create mode 100644 src/iOS/GaiaMotionCurve.podspec create mode 100644 src/iOS/GaiaMotionCurve.xcodeproj/project.pbxproj create mode 100644 src/iOS/GaiaMotionCurve/CALayer+GaiaMotionCurve.h create mode 100644 src/iOS/GaiaMotionCurve/CALayer+GaiaMotionCurve.m create mode 100644 src/iOS/GaiaMotionCurve/GMCDefines.h create mode 100644 src/iOS/GaiaMotionCurve/GMCFunctions.h create mode 100644 src/iOS/GaiaMotionCurve/GMCFunctions.m create mode 100644 src/iOS/GaiaMotionCurve/GMCHelper.h create mode 100644 src/iOS/GaiaMotionCurve/GMCHelper.m create mode 100644 src/iOS/GaiaMotionCurve/GMCModel+Internal.h create mode 100644 src/iOS/GaiaMotionCurve/GMCModel+Internal.m create mode 100644 src/iOS/GaiaMotionCurve/GMCModel.h create mode 100644 src/iOS/GaiaMotionCurve/GMCModel.m create mode 100644 src/iOS/GaiaMotionCurve/GaiaMotionCurve.h create mode 100644 src/iOS/GaiaMotionCurve/NSValue+GMCCGFloat.h create mode 100644 src/iOS/GaiaMotionCurve/NSValue+GMCCGFloat.m create mode 100644 src/iOS/GaiaMotionCurve/NSValue+GMCUIColor.h create mode 100644 src/iOS/GaiaMotionCurve/NSValue+GMCUIColor.m create mode 100644 src/iOS/GaiaMotionCurveTests/GaiaMotionCurveTests.m create mode 100644 src/iOS/Podfile diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..767df98 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.mode1 +*.mode1v3 +*.mode2v3 +*.perspective +*.perspectivev3 +*.pbxuser +*.xcworkspace +*.framework/ +xcuserdata +examples/iOS/Pods/ +src/iOS/Pods/ +src/Android/build/ +examples/Android/build/ +**/.idea +**/.vscode diff --git a/README.md b/README.md new file mode 100644 index 0000000..f1aa1c2 --- /dev/null +++ b/README.md @@ -0,0 +1,96 @@ +# 动效曲线 + +> [en-US](./README_en.md) + +动效曲线SDK 由一系列的动效曲线函数构成,为了解决开发动效的成本高、效果和设计的预期不一致的问题,每个动效曲线函数可应用于任意一个可动效的属性上,通过改变动效过程中的速率和方向给用户带来更好的体验,目前包括线性曲线、加速曲线、减速曲线、余弦曲线、过度曲线、预期曲线、标准曲线(三次贝塞尔曲线)、弹跳曲线、弹性曲线等,目前支持 iOS 和 Android; + +[语雀知识库地址](https://www.yuque.com/youku-gaia/gaia-motion-curve) + +`iOS`和`Android`均用同一套动效曲线的算法实现,保证双端的动效的一致性,iOS 上层封装使用的是`Core Animation`,Android 则是使用的`插值器`。 + +## iOS + +#### 安装 + +```ruby +pod 'GaiaMotionCurve', '0.1.0' +``` + +#### 头文件 + +```objc +#import +``` + +#### 例子 + +```objc + +#import + +NSMutableArray *animationModels = [[NSMutableArray alloc] init]; +GMCModel *model1 =[GMCModel modelWithKeyPath:@"opacity" + duration:0.2 + delay:0 + curveType:MCXCurveTypeStandard + fromValue:[NSValue gmc_valueWithCGFloat:0] + toValue:[NSValue gmc_valueWithCGFloat:0.9]]; +[animationModels addObject:model1]; +[_tipsImageView.layer gmc_animateWithAnimationModels:animationModels completion:^(BOOL finished) {}]; + +``` + +#### [完整iOS Demo 工程](./examples/iOS) + + +## Android + +#### 安装 + +引入编译的aar文件 + +> 目录:src/Android/build/outputs + +#### 包名 + +```java + +import com.gaia.MotionCurve.*; + +``` + +#### 例子 + +```java + +TranslateAnimation animation = new TranslateAnimation(0, displaySize.x - maxTextWidth - 2 * margin, 0, 0); +animation.setFillAfter(true); +animation.setDuration(ANIMATION_DURATION); +animation.setInterpolator(new MotionCurveXStandardInterpolator()); +view.startAnimation(animation); + +``` + +#### [完整Android Demo 工程](./examples/Android) + +## 曲线分类 + +* [线性曲线](./docs/zh-CN/linear.md) +* [加速曲线](./docs/zh-CN/accelerate.md) +* [减速曲线](./docs/zh-CN/decelerate.md) +* [标准曲线](./docs/zh-CN/standard.md) +* [预期曲线](./docs/zh-CN/anticipate.md) +* [过度曲线](./docs/zh-CN/overshoot.md) +* [弹性曲线](./docs/zh-CN/spring.md) +* [弹跳曲线](./docs/zh-CN/bounce.md) +* [余弦曲线](./docs/zh-CN/cosine.md) + +# 行为准则 + +请参考[Alibaba Open Source Code of Conduct](https://github.com/AlibabaDR/community/blob/master/CODE_OF_CONDUCT.md) ([中文版](https://github.com/AlibabaDR/community/blob/master/CODE_OF_CONDUCT_zh.md)). + + +# 开源协议 + +gaia-motion-curve is licensed under the Apache License, Version 2.0. See LICENSE for the full license text. + diff --git a/README_en.md b/README_en.md new file mode 100644 index 0000000..c60ab83 --- /dev/null +++ b/README_en.md @@ -0,0 +1,90 @@ +# Motion Curve + +The Motion Curve SDK consists of a series of dynamic curve functions. In order to solve the problems of high cost of developing dynamic effects and inconsistent effects and design expectations, each dynamic curve function can be applied to any dynamic attribute. Bring a better experience to users by changing the speed and direction in the animation process, currently including linear curve, acceleration curve, deceleration curve, cosine curve, transition curve, expected curve, standard curve (cubic Bezier curve), bounce Curves, elastic curves, etc., currently support iOS and Android; + +[YuQue](https://www.yuque.com/youku-gaia/gaia-motion-curve) + +Both `iOS` and `Android` are implemented with the same set of motion curve algorithms to ensure the consistency of motion effects at both ends. The upper layer package of iOS uses `Core Animation`, and Android uses `Interpolator`. + +## iOS + +#### Install + +```ruby +pod 'GaiaMotionCurve', '0.1.0' +``` + +#### Header + +```objc +#import +``` + +#### Example + +```objc +#import + +NSMutableArray *animationModels = [[NSMutableArray alloc] init]; +GMCModel *model1 =[GMCModel modelWithKeyPath:@"opacity" + duration:0.2 + delay:0 + curveType:MCXCurveTypeStandard + fromValue:[NSValue gmc_valueWithCGFloat:0] + toValue:[NSValue gmc_valueWithCGFloat:0.9]]; +[animationModels addObject:model1]; +[_tipsImageView.layer gmc_animateWithAnimationModels:animationModels completion:^(BOOL finished) {}]; + +``` + +#### [Full iOS Demo Project](./examples/iOS) + + +## Android + +#### Install + +import compiled aar file + +> Directory:src/Android/build/outputs + +#### Package + +```java +import com.gaia.MotionCurve.*; +``` + +#### Example + +```java +TranslateAnimation animation = new TranslateAnimation(0, displaySize.x - maxTextWidth - 2 * margin, 0, 0); +animation.setFillAfter(true); +animation.setDuration(ANIMATION_DURATION); +animation.setInterpolator(new MotionCurveXStandardInterpolator()); +view.startAnimation(animation); + +``` + +#### [Full Android Demo Project](./examples/Android) + +## Motion Curve Categories + +* [Linear](./docs/en-US/linear.md) +* [Accelerate](./docs/en-US/accelerate.md) +* [Decelerate](./docs/en-US/decelerate.md) +* [Standard](./docs/en-US/standard.md) +* [Anticipate](./docs/en-US/anticipate.md) +* [Overshoot](./docs/en-US/overshoot.md) +* [Spring](./docs/en-US/spring.md) +* [Bounce](./docs/en-US/bounce.md) +* [Cosine](./docs/en-US/cosine.md) + +# Code of Conduct + +Please refer to [Alibaba Open Source Code of Conduct](https://github.com/AlibabaDR/community/blob/master/CODE_OF_CONDUCT.md). + + +# LICENCE + +gaia-motion-curve is licensed under the Apache License, Version 2.0. See LICENSE for the full license text. + diff --git a/docs/assets/accelerate.gif b/docs/assets/accelerate.gif new file mode 100644 index 0000000000000000000000000000000000000000..b7f1c1493c320458623ecc914a4b3c6c5fb462ec GIT binary patch literal 77910 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 z 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%0Dkg3zH?FhR9QjApY}_a+%m~o%t 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

Hf0jWgNI~Ai3DiLLs%>r_tYa9}VA|Z|@Vi_payU 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¨J&#Ovx$&7Br%5K?Q@ODc@63SV@l_3E@9{q=FD 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 literal 0 HcmV?d00001 diff --git a/docs/assets/bounce.gif b/docs/assets/bounce.gif new file mode 100644 index 0000000000000000000000000000000000000000..27afb1d76130af0b40a3722cf2618247f8b8e6ae GIT binary patch literal 67936 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 literal 0 HcmV?d00001 diff --git a/docs/assets/decelerate.gif b/docs/assets/decelerate.gif new file mode 100644 index 0000000000000000000000000000000000000000..610850e8231cd10e6ad5c001a5fcdd5d1e9556a1 GIT binary patch literal 64228 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 DW~Lvt literal 0 HcmV?d00001 diff --git a/docs/assets/spring.gif b/docs/assets/spring.gif new file mode 100644 index 0000000000000000000000000000000000000000..31aaaa12bfe4ab98685f4e4917c5c9f08789c81f GIT binary patch literal 48344 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�GQUM|6ohC7QHbh>C0gaeFl%fm*l9 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 literal 0 HcmV?d00001 diff --git a/docs/assets/standard.gif b/docs/assets/standard.gif new file mode 100644 index 0000000000000000000000000000000000000000..ca1cf16328bf79ceb875957d647270a50712732b GIT binary patch literal 77716 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 literal 0 HcmV?d00001 diff --git a/docs/en-US/accelerate.md b/docs/en-US/accelerate.md new file mode 100644 index 0000000..03e2581 --- /dev/null +++ b/docs/en-US/accelerate.md @@ -0,0 +1,93 @@ +# Accelerate + +## Demo + + + +## iOS + +Enumerate:GMCCurveTypeAccelerate + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeAccelerate + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +Interpolator:GaiaMotionCurveAccelerateInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveAccelerateInterpolator()); + animationView.startAnimation(animation); +``` + +## Customizable Parameters + +Configurable Parameters: + +``` +x1: x coordinate of control point x1 +y1: y coordinate of control point y1 +x2: x coordinate of control point x2 +y2: y coordinate of control point y2 +``` + +Default: + +``` +x1 = 0.4 +y1 = 0.0 +x2 = 1.0 +y2 = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeAccelerate + customArgs:@{@"x1":@0.4,@"y1":@0.0,@"x2":@1.0,@"y2":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveAccelerateInterpolator(0.4, 0.0, 1.0, 1.0)); + animationView.startAnimation(animation); +``` + diff --git a/docs/en-US/anticipate.md b/docs/en-US/anticipate.md new file mode 100644 index 0000000..d291088 --- /dev/null +++ b/docs/en-US/anticipate.md @@ -0,0 +1,104 @@ +# Anticipate + +## Demo + + + +## iOS + +Enumerate:GMCCurveTypeAnticipate + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeAnticipate + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +Interpolator:GaiaMotionCurveAnticipateInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveAnticipateInterpolator()); + animationView.startAnimation(animation); +``` + +## Customizable Parameters + +Configurable Parameters: + +``` + d: damping, controls the height of the highest point +x1: x coordinate of control point x1 +y1: y coordinate of control point y1 +x2: x coordinate of control point x2 +y2: y coordinate of control point y2 +x3: x coordinate of control point x3 +y3: y coordinate of control point y3 +x4: x coordinate of control point x4 +y4: y coordinate of control point y4 +``` + +Default: + +``` + d = 0.2 +x1 = 0.33 +y1 = 0.0 +x2 = 0.67 +y2 = 1.0 +x3 = 0.33 +y3 = 0.0 +x4 = 0.2 +y4 = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeAnticipate + customArgs:@{@"d":@0.2,@"x1":@0.33,@"y1":@0.0,@"x2":@0.67,@"y2":@1.0, + @"x3":@0.33,@"y3":@0.0,@"x4":@0.2,@"y4":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveAnticipateInterpolator(0.2,0.33,0.0,0.67,1.0,0.33,0.0,0.2,1.0)); + animationView.startAnimation(animation); +``` + diff --git a/docs/en-US/bounce.md b/docs/en-US/bounce.md new file mode 100644 index 0000000..5f3a2f8 --- /dev/null +++ b/docs/en-US/bounce.md @@ -0,0 +1,89 @@ +# Bounce + +## Demo + + + +## iOS + +Enumerate:GMCCurveTypeBounce + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeBounce + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +Interpolator:GaiaMotionCurveBounceInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveBounceInterpolator()); + animationView.startAnimation(animation); +``` + +## Customizable Parameters + +Configurable Parameters: + +``` +v:velocity +d:damping +``` + +Default: + +``` +v = 1.0 +d = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeBounce + customArgs:@{@"v":@1.0,@"d":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveBounceInterpolator(1.0, 1.0)); + animationView.startAnimation(animation); +``` + diff --git a/docs/en-US/cosine.md b/docs/en-US/cosine.md new file mode 100644 index 0000000..fb4ce8e --- /dev/null +++ b/docs/en-US/cosine.md @@ -0,0 +1,89 @@ +# Cosine + +## Demo + + + +## iOS + +Enumerate:GMCCurveTypeCosine + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeCosine + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +Interpolator:GaiaMotionCurveCosineInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveCosineInterpolator()); + animationView.startAnimation(animation); +``` + +## Customizable Parameters + +Configurable Parameters: + +``` +d:damping +c:cycles, multiples of 0.25 +``` + +Default: + +``` +d = 1.0 +c = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeCosine + customArgs:@{@"d":@1.0,@"c":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveCosineInterpolator(1.0, 1.0)); + animationView.startAnimation(animation); +``` + diff --git a/docs/en-US/decelerate.md b/docs/en-US/decelerate.md new file mode 100644 index 0000000..60d518c --- /dev/null +++ b/docs/en-US/decelerate.md @@ -0,0 +1,93 @@ +# Decelerate + +## Demo + + + +## iOS + +Enumerate:GMCCurveTypeDecelerate + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeDecelerate + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +Interpolator:GaiaMotionCurveDecelerateInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveDecelerateInterpolator()); + animationView.startAnimation(animation); +``` + +## Customizable Parameters + +Configurable Parameters: + +``` +x1: x coordinate of control point x1 +y1: y coordinate of control point y1 +x2: x coordinate of control point x2 +y2: y coordinate of control point y2 +``` + +Default: + +``` +x1 = 0.0 +y1 = 0.0 +x2 = 0.1 +y2 = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeDecelerate + customArgs:@{@"x1":@0.0,@"y1":@0.0,@"x2":@0.1,@"y2":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveDecelerateInterpolator(0.0, 0.0, 0.1, 1.0)); + animationView.startAnimation(animation); +``` + diff --git a/docs/en-US/linear.md b/docs/en-US/linear.md new file mode 100644 index 0000000..7ae8cc2 --- /dev/null +++ b/docs/en-US/linear.md @@ -0,0 +1,46 @@ +# Linear + +## Demo + + + +## iOS + +Enumerate:GMCCurveTypeLinear + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeLinear + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +Interpolator:GaiaMotionCurveLinearInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveLinearInterpolator()); + animationView.startAnimation(animation); +``` + +## Customizable Parameters + +None diff --git a/docs/en-US/overshoot.md b/docs/en-US/overshoot.md new file mode 100644 index 0000000..661ccfb --- /dev/null +++ b/docs/en-US/overshoot.md @@ -0,0 +1,106 @@ +# Overshoot + +## Demo + + + + + +## iOS + +Enumerate:GMCCurveTypeOvershoot + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeOvershoot + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +Interpolator:GaiaMotionCurveOvershootInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveOvershootInterpolator()); + animationView.startAnimation(animation); +``` + +## Customizable Parameters + +Configurable Parameters: + +``` + d: damping, controls the height of the highest point +x1: x coordinate of control point x1 +y1: y coordinate of control point y1 +x2: x coordinate of control point x2 +y2: y coordinate of control point y2 +x3: x coordinate of control point x3 +y3: y coordinate of control point y3 +x4: x coordinate of control point x4 +y4: y coordinate of control point y4 +``` + +Default: + +``` + d = 1.2 +x1 = 0.33 +y1 = 0.0 +x2 = 0.3 +y2 = 1.0 +x3 = 0.33 +y3 = 0.0 +x4 = 0.5 +y4 = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeOvershoot + customArgs:@{@"d":@1.2,@"x1":@0.33,@"y1":@0.0,@"x2":@0.3,@"y2":@1.0, + @"x3":@0.33,@"y3":@0.0,@"x4":@0.5,@"y4":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveOvershootInterpolator(1.2,0.33,0.0,0.3,1.0,0.33,0.0,0.5,1.0)); + animationView.startAnimation(animation); +``` + diff --git a/docs/en-US/spring.md b/docs/en-US/spring.md new file mode 100644 index 0000000..6d2e495 --- /dev/null +++ b/docs/en-US/spring.md @@ -0,0 +1,132 @@ +# Spring + +## Demo + + + +## iOS + +Enumerate:GMCCurveTypeSpring + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeSpring + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +Interpolator:GaiaMotionCurveSpringInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveSpringInterpolator()); + animationView.startAnimation(animation); +``` + +## Customizable Parameters + +Configurable Parameters: + +Spring curve supports two parameter systems, Mass and RK4 (Android only supports Mass system temporarily) + +**Mass System:** + +``` +m: mass +s: stiffness +d: damping +iv:velocity +``` + +Default: + +``` +m = 0.7 +s = 380.0 +d = 10.0 +iv = -2.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeSpring + customArgs:@{@"m":@1.0,@"s":@380.0,@"d":@10.0,@"iv":@-2.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveSpringInterpolator(0.7, 380.0, 10.0, -2.0)); + animationView.startAnimation(animation); +``` + +**RK4 System:** + +``` +t: tension +f: friction +v: velocity +``` + +Default: + +``` +t = 533.0 +f = 14.0 +v = -2.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeSpring + customArgs:@{@"t":@533.0,@"f":@14.0,@"v":@-2.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + diff --git a/docs/en-US/standard.md b/docs/en-US/standard.md new file mode 100644 index 0000000..e9796a5 --- /dev/null +++ b/docs/en-US/standard.md @@ -0,0 +1,93 @@ +# Standard + +## Demo + + + +## iOS + +Enumerate:GMCCurveTypeStandard + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeStandard + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +Interpolator:GaiaMotionCurveStandardInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveStandardInterpolator()); + animationView.startAnimation(animation); +``` + +## Customizable Parameters + +Configurable Parameters: + +``` +x1: x coordinate of control point x1 +y1: y coordinate of control point y1 +x2: x coordinate of control point x2 +y2: y coordinate of control point y2 +``` + +Default: + +``` +x1 = 0.4 +y1 = 0.0 +x2 = 0.1 +y2 = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeStandard + customArgs:@{@"x1":@0.4,@"y1":@0.0,@"x2":@0.1,@"y2":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveStandardInterpolator(0.4, 0.0, 0.1, 1.0)); + animationView.startAnimation(animation); +``` + diff --git a/docs/zh-CN/accelerate.md b/docs/zh-CN/accelerate.md new file mode 100644 index 0000000..009b108 --- /dev/null +++ b/docs/zh-CN/accelerate.md @@ -0,0 +1,93 @@ +# 加速曲线 + +## 演示 + + + +## iOS + +枚举:GMCCurveTypeAccelerate + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeAccelerate + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +差值器:GaiaMotionCurveAccelerateInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveAccelerateInterpolator()); + animationView.startAnimation(animation); +``` + +## 可自定义的参数 + +可配置的参数: + +``` +x1:控制点1的x坐标 +y1:控制点1的y坐标 +x2:控制点2的x坐标 +y2:控制点2的y坐标 +``` + +默认值: + +``` +x1 = 0.4 +y1 = 0.0 +x2 = 1.0 +y2 = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeAccelerate + customArgs:@{@"x1":@0.4,@"y1":@0.0,@"x2":@1.0,@"y2":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveAccelerateInterpolator(0.4, 0.0, 1.0, 1.0)); + animationView.startAnimation(animation); +``` + diff --git a/docs/zh-CN/anticipate.md b/docs/zh-CN/anticipate.md new file mode 100644 index 0000000..fd40efc --- /dev/null +++ b/docs/zh-CN/anticipate.md @@ -0,0 +1,104 @@ +# 预期曲线 + +## 演示 + + + +## iOS + +枚举:GMCCurveTypeAnticipate + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeAnticipate + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +差值器:GaiaMotionCurveAnticipateInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveAnticipateInterpolator()); + animationView.startAnimation(animation); +``` + +## 可自定义的参数 + +可配置的参数: + +``` + d:damping的缩写,控制的是最低点的高低 +x1:控制点1的x坐标 +y1:控制点1的y坐标 +x2:控制点2的x坐标 +y2:控制点2的y坐标 +x3:控制点3的x坐标 +y3:控制点3的y坐标 +x4:控制点4的x坐标 +y4:控制点4的y坐标 +``` + +默认值为: + +``` + d = 0.2 +x1 = 0.33 +y1 = 0.0 +x2 = 0.67 +y2 = 1.0 +x3 = 0.33 +y3 = 0.0 +x4 = 0.2 +y4 = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeAnticipate + customArgs:@{@"d":@0.2,@"x1":@0.33,@"y1":@0.0,@"x2":@0.67,@"y2":@1.0, + @"x3":@0.33,@"y3":@0.0,@"x4":@0.2,@"y4":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveAnticipateInterpolator(0.2,0.33,0.0,0.67,1.0,0.33,0.0,0.2,1.0)); + animationView.startAnimation(animation); +``` + diff --git a/docs/zh-CN/bounce.md b/docs/zh-CN/bounce.md new file mode 100644 index 0000000..fe8fdf6 --- /dev/null +++ b/docs/zh-CN/bounce.md @@ -0,0 +1,89 @@ +# 弹跳曲线 + +## 演示 + + + +## iOS + +枚举:GMCCurveTypeBounce + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeBounce + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +差值器:GaiaMotionCurveBounceInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveBounceInterpolator()); + animationView.startAnimation(animation); +``` + +## 可自定义的参数 + +可配置的参数: + +``` +v:velocity的缩写 +d:damping的缩写 +``` + +默认值为: + +``` +v = 1.0 +d = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeBounce + customArgs:@{@"v":@1.0,@"d":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveBounceInterpolator(1.0, 1.0)); + animationView.startAnimation(animation); +``` + diff --git a/docs/zh-CN/cosine.md b/docs/zh-CN/cosine.md new file mode 100644 index 0000000..22770ba --- /dev/null +++ b/docs/zh-CN/cosine.md @@ -0,0 +1,89 @@ +# 余弦曲线 + +## 演示 + + + +## iOS + +枚举:GMCCurveTypeCosine + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeCosine + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +差值器:GaiaMotionCurveCosineInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveCosineInterpolator()); + animationView.startAnimation(animation); +``` + +## 可自定义的参数 + +可配置的参数: + +``` +d:damping的缩写,控制的是最高点的高低 +c:cycles的缩写,周期的次数且是0.25的倍数 +``` + +默认值为: + +``` +d = 1.0 +c = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeCosine + customArgs:@{@"d":@1.0,@"c":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveCosineInterpolator(1.0, 1.0)); + animationView.startAnimation(animation); +``` + diff --git a/docs/zh-CN/decelerate.md b/docs/zh-CN/decelerate.md new file mode 100644 index 0000000..64f9f4d --- /dev/null +++ b/docs/zh-CN/decelerate.md @@ -0,0 +1,93 @@ +# 减速曲线 + +## 演示 + + + +## iOS + +枚举:GMCCurveTypeDecelerate + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeDecelerate + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +差值器:GaiaMotionCurveDecelerateInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveDecelerateInterpolator()); + animationView.startAnimation(animation); +``` + +## 可自定义的参数 + +可配置的参数: + +``` +x1:控制点1的x坐标 +y1:控制点1的y坐标 +x2:控制点2的x坐标 +y2:控制点2的y坐标 +``` + +默认值为: + +``` +x1 = 0.0 +y1 = 0.0 +x2 = 0.1 +y2 = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeDecelerate + customArgs:@{@"x1":@0.0,@"y1":@0.0,@"x2":@0.1,@"y2":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveDecelerateInterpolator(0.0, 0.0, 0.1, 1.0)); + animationView.startAnimation(animation); +``` + diff --git a/docs/zh-CN/linear.md b/docs/zh-CN/linear.md new file mode 100644 index 0000000..bcd0919 --- /dev/null +++ b/docs/zh-CN/linear.md @@ -0,0 +1,46 @@ +# 线性曲线 + +## 演示 + + + +## iOS + +枚举:GMCCurveTypeLinear + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeLinear + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +差值器:GaiaMotionCurveLinearInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveLinearInterpolator()); + animationView.startAnimation(animation); +``` + +## 可自定义的参数 + +无 diff --git a/docs/zh-CN/overshoot.md b/docs/zh-CN/overshoot.md new file mode 100644 index 0000000..724d67b --- /dev/null +++ b/docs/zh-CN/overshoot.md @@ -0,0 +1,104 @@ +# 过度曲线 + +## 演示 + + + +## iOS + +枚举:GMCCurveTypeOvershoot + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeOvershoot + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +差值器:GaiaMotionCurveOvershootInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveOvershootInterpolator()); + animationView.startAnimation(animation); +``` + +## 可自定义的参数 + +可配置的参数: + +``` + d:damping的缩写,控制的是最高点的高低 +x1:控制点1的x坐标 +y1:控制点1的y坐标 +x2:控制点2的x坐标 +y2:控制点2的y坐标 +x3:控制点3的x坐标 +y3:控制点3的y坐标 +x4:控制点4的x坐标 +y4:控制点4的y坐标 +``` + +默认值为: + +``` + d = 1.2 +x1 = 0.33 +y1 = 0.0 +x2 = 0.3 +y2 = 1.0 +x3 = 0.33 +y3 = 0.0 +x4 = 0.5 +y4 = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeOvershoot + customArgs:@{@"d":@1.2,@"x1":@0.33,@"y1":@0.0,@"x2":@0.3,@"y2":@1.0, + @"x3":@0.33,@"y3":@0.0,@"x4":@0.5,@"y4":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveOvershootInterpolator(1.2,0.33,0.0,0.3,1.0,0.33,0.0,0.5,1.0)); + animationView.startAnimation(animation); +``` + diff --git a/docs/zh-CN/spring.md b/docs/zh-CN/spring.md new file mode 100644 index 0000000..d916f2d --- /dev/null +++ b/docs/zh-CN/spring.md @@ -0,0 +1,132 @@ +# 弹性曲线 + +## 演示 + + + +## iOS + +枚举:GMCCurveTypeSpring + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeSpring + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +差值器:GaiaMotionCurveSpringInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveSpringInterpolator()); + animationView.startAnimation(animation); +``` + +## 可自定义的参数 + +可配置的参数: + +弹性曲线支持Mass和RK4两套参数系统(Android暂时只支持Mass参数系统) + +**Mass参数系统:** + +``` +m: mass的缩写 +s: stiffness的缩写 +d: damping的缩写 +iv:velocity的缩写 +``` + +默认值为: + +``` +m = 0.7 +s = 380.0 +d = 10.0 +iv = -2.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeSpring + customArgs:@{@"m":@1.0,@"s":@380.0,@"d":@10.0,@"iv":@-2.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveSpringInterpolator(0.7, 380.0, 10.0, -2.0)); + animationView.startAnimation(animation); +``` + +**RK4参数系统:** + +``` +t: tension的缩写 +f: friction的缩写 +v: velocity的缩写 +``` + +默认值为: + +``` +t = 533.0 +f = 14.0 +v = -2.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeSpring + customArgs:@{@"t":@533.0,@"f":@14.0,@"v":@-2.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + diff --git a/docs/zh-CN/standard.md b/docs/zh-CN/standard.md new file mode 100644 index 0000000..ddc4cf5 --- /dev/null +++ b/docs/zh-CN/standard.md @@ -0,0 +1,93 @@ +# 标准曲线 + +## 演示 + + + +## iOS + +枚举:GMCCurveTypeStandard + +```objc + #import + + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeStandard + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +## Android + +差值器:GaiaMotionCurveStandardInterpolator + +```java + import com.gaia.MotionCurve.*; + + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveStandardInterpolator()); + animationView.startAnimation(animation); +``` + +## 可自定义的参数 + +可配置的参数: + +``` +x1:控制点1的x坐标 +y1:控制点1的y坐标 +x2:控制点2的x坐标 +y2:控制点2的y坐标 +``` + +默认值为: + +``` +x1 = 0.4 +y1 = 0.0 +x2 = 0.1 +y2 = 1.0 +``` + +iOS + +```objective-c + CGFloat right = [[UIScreen mainScreen] bounds].size.width - 80 - 20; + GMCModel *model = [GMCModel modelWithKeyPath:@"position.x" + duration:0.75 + delay:0 + curveType:GMCCurveTypeStandard + customArgs:@{@"x1":@0.4,@"y1":@0.0,@"x2":@0.1,@"y2":@1.0} + fromValue:[NSValue gmc_valueWithCGFloat:_animationView.center.x] + toValue:[NSValue gmc_valueWithCGFloat:right]]; + __weak typeof(self) weakSelf = self; + [_animationView.layer gmc_animateWithAnimationModels:@[model] completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + weakSelf.animationView.layer.frame = CGRectMake(80, 200, 40, 40); + }); + }]; +``` + +Android + +```java + View animationView = findViewById(R.id.animation_view); + TranslateAnimation animation = new TranslateAnimation(0, 700, 0, 0); + animation.setFillAfter(true); + animation.setDuration(700); + animation.setInterpolator(new GaiaMotionCurveStandardInterpolator(0.4, 0.0, 0.1, 1.0)); + animationView.startAnimation(animation); +``` + diff --git a/src/iOS/GaiaMotionCurve.podspec b/src/iOS/GaiaMotionCurve.podspec new file mode 100644 index 0000000..ebea566 --- /dev/null +++ b/src/iOS/GaiaMotionCurve.podspec @@ -0,0 +1,17 @@ +Pod::Spec.new do |s| + + s.name = "GaiaMotionCurve" + s.version = "0.1.0" + s.summary = "a library to solve the problems of high cost of developing dynamic effects and inconsistent effects and design expectations" + s.license = { :type => 'Apache License, Version 2.0' } + s.homepage = "https://github.com/alibaba/gaia-motion-curve" + + s.author = { "ronghui.zrh" => "ronghui.zrh@alibaba-inc.com" } + s.platform = :ios, "9.0" + s.source = { :git => "https://github.com/alibaba/gaia-motion-curve.git", :tag => s.version } + + + s.source_files = 'src/iOS/GaiaMotionCurve/**/*.{h,m,mm,c}' + s.xcconfig = { "ENABLE_BITCODE" => "NO" } + s.requires_arc = true +end diff --git a/src/iOS/GaiaMotionCurve.xcodeproj/project.pbxproj b/src/iOS/GaiaMotionCurve.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ad00ded --- /dev/null +++ b/src/iOS/GaiaMotionCurve.xcodeproj/project.pbxproj @@ -0,0 +1,512 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + BD6BDF1C2783F60E001B1CA3 /* CALayer+GaiaMotionCurve.h in Headers */ = {isa = PBXBuildFile; fileRef = BD6BDF1A2783F60E001B1CA3 /* CALayer+GaiaMotionCurve.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD6BDF1D2783F60E001B1CA3 /* CALayer+GaiaMotionCurve.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6BDF1B2783F60E001B1CA3 /* CALayer+GaiaMotionCurve.m */; }; + BD6BDF212783F69E001B1CA3 /* GMCDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = BD6BDF202783F69E001B1CA3 /* GMCDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD6BDF242783F6E2001B1CA3 /* NSValue+GMCCGFloat.h in Headers */ = {isa = PBXBuildFile; fileRef = BD6BDF222783F6E2001B1CA3 /* NSValue+GMCCGFloat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD6BDF252783F6E2001B1CA3 /* NSValue+GMCCGFloat.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6BDF232783F6E2001B1CA3 /* NSValue+GMCCGFloat.m */; }; + BD6BDF282783F6F7001B1CA3 /* NSValue+GMCUIColor.h in Headers */ = {isa = PBXBuildFile; fileRef = BD6BDF262783F6F7001B1CA3 /* NSValue+GMCUIColor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD6BDF292783F6F7001B1CA3 /* NSValue+GMCUIColor.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6BDF272783F6F7001B1CA3 /* NSValue+GMCUIColor.m */; }; + BD6BDF2C2783F723001B1CA3 /* GMCModel.h in Headers */ = {isa = PBXBuildFile; fileRef = BD6BDF2A2783F723001B1CA3 /* GMCModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD6BDF2D2783F723001B1CA3 /* GMCModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6BDF2B2783F723001B1CA3 /* GMCModel.m */; }; + BD6BDF302783F741001B1CA3 /* GMCModel+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BD6BDF2E2783F741001B1CA3 /* GMCModel+Internal.h */; }; + BD6BDF312783F741001B1CA3 /* GMCModel+Internal.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6BDF2F2783F741001B1CA3 /* GMCModel+Internal.m */; }; + BD6BDF342783F75F001B1CA3 /* GMCHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = BD6BDF322783F75F001B1CA3 /* GMCHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD6BDF352783F75F001B1CA3 /* GMCHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6BDF332783F75F001B1CA3 /* GMCHelper.m */; }; + BD6BDF3C2783F924001B1CA3 /* GMCFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = BD6BDF3A2783F924001B1CA3 /* GMCFunctions.h */; }; + BD6BDF3D2783F924001B1CA3 /* GMCFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6BDF3B2783F924001B1CA3 /* GMCFunctions.m */; }; + BDD182A22783F4A3008547F4 /* GaiaMotionCurve.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD182972783F4A2008547F4 /* GaiaMotionCurve.framework */; }; + BDD182A72783F4A3008547F4 /* GaiaMotionCurveTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BDD182A62783F4A3008547F4 /* GaiaMotionCurveTests.m */; }; + BDD182A82783F4A3008547F4 /* GaiaMotionCurve.h in Headers */ = {isa = PBXBuildFile; fileRef = BDD1829A2783F4A2008547F4 /* GaiaMotionCurve.h */; settings = {ATTRIBUTES = (Public, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + BDD182A32783F4A3008547F4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDD1828E2783F4A2008547F4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BDD182962783F4A2008547F4; + remoteInfo = GaiaMotionCurve; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + BD6BDF1A2783F60E001B1CA3 /* CALayer+GaiaMotionCurve.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CALayer+GaiaMotionCurve.h"; sourceTree = ""; }; + BD6BDF1B2783F60E001B1CA3 /* CALayer+GaiaMotionCurve.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "CALayer+GaiaMotionCurve.m"; sourceTree = ""; }; + BD6BDF202783F69E001B1CA3 /* GMCDefines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GMCDefines.h; sourceTree = ""; }; + BD6BDF222783F6E2001B1CA3 /* NSValue+GMCCGFloat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSValue+GMCCGFloat.h"; sourceTree = ""; }; + BD6BDF232783F6E2001B1CA3 /* NSValue+GMCCGFloat.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSValue+GMCCGFloat.m"; sourceTree = ""; }; + BD6BDF262783F6F7001B1CA3 /* NSValue+GMCUIColor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSValue+GMCUIColor.h"; sourceTree = ""; }; + BD6BDF272783F6F7001B1CA3 /* NSValue+GMCUIColor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSValue+GMCUIColor.m"; sourceTree = ""; }; + BD6BDF2A2783F723001B1CA3 /* GMCModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GMCModel.h; sourceTree = ""; }; + BD6BDF2B2783F723001B1CA3 /* GMCModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GMCModel.m; sourceTree = ""; }; + BD6BDF2E2783F741001B1CA3 /* GMCModel+Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "GMCModel+Internal.h"; sourceTree = ""; }; + BD6BDF2F2783F741001B1CA3 /* GMCModel+Internal.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "GMCModel+Internal.m"; sourceTree = ""; }; + BD6BDF322783F75F001B1CA3 /* GMCHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GMCHelper.h; sourceTree = ""; }; + BD6BDF332783F75F001B1CA3 /* GMCHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GMCHelper.m; sourceTree = ""; }; + BD6BDF3A2783F924001B1CA3 /* GMCFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GMCFunctions.h; sourceTree = ""; }; + BD6BDF3B2783F924001B1CA3 /* GMCFunctions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GMCFunctions.m; sourceTree = ""; }; + BDD182972783F4A2008547F4 /* GaiaMotionCurve.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GaiaMotionCurve.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BDD1829A2783F4A2008547F4 /* GaiaMotionCurve.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GaiaMotionCurve.h; sourceTree = ""; }; + BDD182A12783F4A3008547F4 /* GaiaMotionCurveTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GaiaMotionCurveTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + BDD182A62783F4A3008547F4 /* GaiaMotionCurveTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GaiaMotionCurveTests.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + BDD182942783F4A2008547F4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BDD1829E2783F4A3008547F4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD182A22783F4A3008547F4 /* GaiaMotionCurve.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + BDD1828D2783F4A2008547F4 = { + isa = PBXGroup; + children = ( + BDD182992783F4A2008547F4 /* GaiaMotionCurve */, + BDD182A52783F4A3008547F4 /* GaiaMotionCurveTests */, + BDD182982783F4A2008547F4 /* Products */, + ); + sourceTree = ""; + }; + BDD182982783F4A2008547F4 /* Products */ = { + isa = PBXGroup; + children = ( + BDD182972783F4A2008547F4 /* GaiaMotionCurve.framework */, + BDD182A12783F4A3008547F4 /* GaiaMotionCurveTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + BDD182992783F4A2008547F4 /* GaiaMotionCurve */ = { + isa = PBXGroup; + children = ( + BDD1829A2783F4A2008547F4 /* GaiaMotionCurve.h */, + BD6BDF1A2783F60E001B1CA3 /* CALayer+GaiaMotionCurve.h */, + BD6BDF1B2783F60E001B1CA3 /* CALayer+GaiaMotionCurve.m */, + BD6BDF202783F69E001B1CA3 /* GMCDefines.h */, + BD6BDF222783F6E2001B1CA3 /* NSValue+GMCCGFloat.h */, + BD6BDF232783F6E2001B1CA3 /* NSValue+GMCCGFloat.m */, + BD6BDF262783F6F7001B1CA3 /* NSValue+GMCUIColor.h */, + BD6BDF272783F6F7001B1CA3 /* NSValue+GMCUIColor.m */, + BD6BDF2A2783F723001B1CA3 /* GMCModel.h */, + BD6BDF2B2783F723001B1CA3 /* GMCModel.m */, + BD6BDF2E2783F741001B1CA3 /* GMCModel+Internal.h */, + BD6BDF2F2783F741001B1CA3 /* GMCModel+Internal.m */, + BD6BDF322783F75F001B1CA3 /* GMCHelper.h */, + BD6BDF332783F75F001B1CA3 /* GMCHelper.m */, + BD6BDF3A2783F924001B1CA3 /* GMCFunctions.h */, + BD6BDF3B2783F924001B1CA3 /* GMCFunctions.m */, + ); + path = GaiaMotionCurve; + sourceTree = ""; + }; + BDD182A52783F4A3008547F4 /* GaiaMotionCurveTests */ = { + isa = PBXGroup; + children = ( + BDD182A62783F4A3008547F4 /* GaiaMotionCurveTests.m */, + ); + path = GaiaMotionCurveTests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + BDD182922783F4A2008547F4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + BD6BDF342783F75F001B1CA3 /* GMCHelper.h in Headers */, + BD6BDF212783F69E001B1CA3 /* GMCDefines.h in Headers */, + BD6BDF282783F6F7001B1CA3 /* NSValue+GMCUIColor.h in Headers */, + BD6BDF1C2783F60E001B1CA3 /* CALayer+GaiaMotionCurve.h in Headers */, + BD6BDF2C2783F723001B1CA3 /* GMCModel.h in Headers */, + BD6BDF242783F6E2001B1CA3 /* NSValue+GMCCGFloat.h in Headers */, + BDD182A82783F4A3008547F4 /* GaiaMotionCurve.h in Headers */, + BD6BDF3C2783F924001B1CA3 /* GMCFunctions.h in Headers */, + BD6BDF302783F741001B1CA3 /* GMCModel+Internal.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + BDD182962783F4A2008547F4 /* GaiaMotionCurve */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDD182AB2783F4A3008547F4 /* Build configuration list for PBXNativeTarget "GaiaMotionCurve" */; + buildPhases = ( + BDD182922783F4A2008547F4 /* Headers */, + BDD182932783F4A2008547F4 /* Sources */, + BDD182942783F4A2008547F4 /* Frameworks */, + BDD182952783F4A2008547F4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = GaiaMotionCurve; + productName = GaiaMotionCurve; + productReference = BDD182972783F4A2008547F4 /* GaiaMotionCurve.framework */; + productType = "com.apple.product-type.framework"; + }; + BDD182A02783F4A3008547F4 /* GaiaMotionCurveTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDD182AE2783F4A3008547F4 /* Build configuration list for PBXNativeTarget "GaiaMotionCurveTests" */; + buildPhases = ( + BDD1829D2783F4A3008547F4 /* Sources */, + BDD1829E2783F4A3008547F4 /* Frameworks */, + BDD1829F2783F4A3008547F4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDD182A42783F4A3008547F4 /* PBXTargetDependency */, + ); + name = GaiaMotionCurveTests; + productName = GaiaMotionCurveTests; + productReference = BDD182A12783F4A3008547F4 /* GaiaMotionCurveTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + BDD1828E2783F4A2008547F4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastUpgradeCheck = 1320; + TargetAttributes = { + BDD182962783F4A2008547F4 = { + CreatedOnToolsVersion = 13.2.1; + }; + BDD182A02783F4A3008547F4 = { + CreatedOnToolsVersion = 13.2.1; + }; + }; + }; + buildConfigurationList = BDD182912783F4A2008547F4 /* Build configuration list for PBXProject "GaiaMotionCurve" */; + compatibilityVersion = "Xcode 13.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = BDD1828D2783F4A2008547F4; + productRefGroup = BDD182982783F4A2008547F4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + BDD182962783F4A2008547F4 /* GaiaMotionCurve */, + BDD182A02783F4A3008547F4 /* GaiaMotionCurveTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + BDD182952783F4A2008547F4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BDD1829F2783F4A3008547F4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + BDD182932783F4A2008547F4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BD6BDF312783F741001B1CA3 /* GMCModel+Internal.m in Sources */, + BD6BDF352783F75F001B1CA3 /* GMCHelper.m in Sources */, + BD6BDF292783F6F7001B1CA3 /* NSValue+GMCUIColor.m in Sources */, + BD6BDF2D2783F723001B1CA3 /* GMCModel.m in Sources */, + BD6BDF1D2783F60E001B1CA3 /* CALayer+GaiaMotionCurve.m in Sources */, + BD6BDF252783F6E2001B1CA3 /* NSValue+GMCCGFloat.m in Sources */, + BD6BDF3D2783F924001B1CA3 /* GMCFunctions.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BDD1829D2783F4A3008547F4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD182A72783F4A3008547F4 /* GaiaMotionCurveTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + BDD182A42783F4A3008547F4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BDD182962783F4A2008547F4 /* GaiaMotionCurve */; + targetProxy = BDD182A32783F4A3008547F4 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + BDD182A92783F4A3008547F4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + BDD182AA2783F4A3008547F4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + BDD182AC2783F4A3008547F4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 13.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.GaiaMotionCurve; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + BDD182AD2783F4A3008547F4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 13.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.GaiaMotionCurve; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + BDD182AF2783F4A3008547F4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.GaiaMotionCurveTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + BDD182B02783F4A3008547F4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.GaiaMotionCurveTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + BDD182912783F4A2008547F4 /* Build configuration list for PBXProject "GaiaMotionCurve" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDD182A92783F4A3008547F4 /* Debug */, + BDD182AA2783F4A3008547F4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + BDD182AB2783F4A3008547F4 /* Build configuration list for PBXNativeTarget "GaiaMotionCurve" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDD182AC2783F4A3008547F4 /* Debug */, + BDD182AD2783F4A3008547F4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + BDD182AE2783F4A3008547F4 /* Build configuration list for PBXNativeTarget "GaiaMotionCurveTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDD182AF2783F4A3008547F4 /* Debug */, + BDD182B02783F4A3008547F4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = BDD1828E2783F4A2008547F4 /* Project object */; +} diff --git a/src/iOS/GaiaMotionCurve/CALayer+GaiaMotionCurve.h b/src/iOS/GaiaMotionCurve/CALayer+GaiaMotionCurve.h new file mode 100644 index 0000000..8cf776b --- /dev/null +++ b/src/iOS/GaiaMotionCurve/CALayer+GaiaMotionCurve.h @@ -0,0 +1,53 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import +#import "GMCModel.h" +#import "NSValue+GMCCGFloat.h" +#import "NSValue+GMCUIColor.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface CALayer (GaiaMotionCurve) + +/** + when finished,will auto set toValue to layer,do not need set in completion block again + @param models animation models array + @param completion finished block + @return animation unique id + */ +- (NSString *)gmc_animateWithGMCModels:(NSArray *)models + completion:(GMCCompletionBlock)completion; + + +//serial animation +- (NSString *)gmc_serialAnimationWithGMCModels:(NSArray *)models + completion:(GMCCompletionBlock)completion; + +/** + cancel animation with animationID + @param animationID animation unique id + */ +- (void)gmc_cancelAnimationWithID:(NSString *)animationID; + +// cancel all animations +- (void)gmc_cancelAllAnimations; + + +@property(nonatomic, strong) NSMutableDictionary *gmc_animationKeys; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/iOS/GaiaMotionCurve/CALayer+GaiaMotionCurve.m b/src/iOS/GaiaMotionCurve/CALayer+GaiaMotionCurve.m new file mode 100644 index 0000000..b6b4857 --- /dev/null +++ b/src/iOS/GaiaMotionCurve/CALayer+GaiaMotionCurve.m @@ -0,0 +1,285 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#import "CALayer+GaiaMotionCurve.h" +#import "GMCHelper.h" +#import "GMCModel+Internal.h" +#import + + +static const void *kGMCAnimationKeys = &kGMCAnimationKeys; + +@implementation CALayer (GaiaMotionCurve) + +- (NSString *)gmc_animateWithGMCModels:(NSArray *)models + completion:(GMCCompletionBlock)completion { + return [self gmc_animateWithGMCModels:models animationKey:nil completion:completion]; +} + + +- (NSString *)gmc_animateWithGMCModels:(NSArray *)models + animationKey:(NSString *)animationKey + completion:(GMCCompletionBlock)completion { + if (models == nil || models.count <= 0) { + return nil; + } + NSMutableArray *animations = [NSMutableArray array]; + NSString *uuidString = animationKey; + + if (self.gmc_animationKeys == nil) { + self.gmc_animationKeys = [NSMutableDictionary dictionary]; + } + + int durationIndex = 0; + CFTimeInterval currentDuration = 0; + for (int i = 0; i < models.count; i++) { + GMCModel *model = [models objectAtIndex:i]; + NSArray *values = [GMCHelper valuesByCurveModel:model]; + if (values == nil || values.count <= 0) { + continue; + } + + if ([model.keyPath hasPrefix:@"bounds"]) { + [self addGMCAnimation:model]; + } + + CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:model.keyPath]; + animation.fillMode = kCAFillModeForwards; + animation.removedOnCompletion = NO; + animation.delegate = self; + animation.beginTime = model.delay; + animation.duration = model.duration; + animation.repeatCount = model.repeatCount; + animation.autoreverses = model.autoReverse; + [animation setValues:values]; + [animations addObject:animation]; + + CFTimeInterval tmpDuration = (MAX(model.repeatCount, 1) + (model.autoReverse ? 1 : 0)) * (model.duration) + model.delay; + if (tmpDuration > currentDuration) { + durationIndex = i; + currentDuration = tmpDuration; + } + } + + NSMutableArray *animationKeys = (animationKey == nil ? [NSMutableArray array] : self.gmc_animationKeys[animationKey]); + for (int i = 0; i < animations.count; i++) { + CAKeyframeAnimation *animation = [animations objectAtIndex:i]; + NSString *identifier = [[NSUUID UUID] UUIDString]; + [animation setValue:identifier forKey:@"gmc_identifier"]; + if (i == durationIndex) { + if (completion != nil) { + [animation setValue:completion forKey:@"gmc_completion_block"]; + } + if (uuidString == nil) { + uuidString = identifier; + } + } + [animationKeys addObject:identifier]; + [self addAnimation:animation forKey:identifier]; + } + + [self.gmc_animationKeys setObject:animationKeys forKey:uuidString]; + + return uuidString; +} + +- (void)addGMCAnimation:(GMCModel *)model { + UIView *associatedView = (UIView *) self.delegate; + CGRect fromRect = [model.fromValue CGRectValue]; + CGRect toRect = [model.toValue CGRectValue]; + if ([associatedView isKindOfClass:[UIView class]] && + associatedView.autoresizesSubviews && + associatedView.subviews.count > 0) { + for (UIView *view in associatedView.subviews) { + UIViewAutoresizing mask = view.autoresizingMask; + if (mask != UIViewAutoresizingNone) { + CGFloat dx = toRect.size.width - fromRect.size.width; + CGFloat dy = toRect.size.height - fromRect.size.height; + + dx /= ((mask & UIViewAutoresizingFlexibleLeftMargin) ? 1 : 0) + + ((mask & UIViewAutoresizingFlexibleWidth) ? 1 : 0) + + ((mask & UIViewAutoresizingFlexibleRightMargin) ? 1 : 0); + dy /= ((mask & UIViewAutoresizingFlexibleTopMargin) ? 1 : 0) + + ((mask & UIViewAutoresizingFlexibleHeight) ? 1 : 0) + + ((mask & UIViewAutoresizingFlexibleBottomMargin) ? 1 : 0); + + CGFloat scale = [UIScreen mainScreen].scale; + if ((fabs(dx) < 1.0f / scale) && (fabs(dy) < 1.0f / scale)) { + return; + } + CGRect bounds = view.bounds; + bounds.size.width += (mask & UIViewAutoresizingFlexibleWidth) ? dx : 0; + bounds.size.height += + (mask & UIViewAutoresizingFlexibleHeight) ? dy : 0; + CGFloat originX = 0; + if (mask & UIViewAutoresizingFlexibleLeftMargin) { + originX = dx; + } else if (mask & UIViewAutoresizingFlexibleWidth) { + originX = dx * view.layer.anchorPoint.x; + }; + CGFloat originY = 0; + if (mask & UIViewAutoresizingFlexibleTopMargin) { + originY = dy; + } else if (mask & UIViewAutoresizingFlexibleHeight) { + originY = dy * view.layer.anchorPoint.y; + }; + NSMutableArray *array = [[NSMutableArray alloc] init]; + if (!CGRectEqualToRect(view.bounds, bounds)) { + GMCModel *model1 = [GMCModel + modelWithKeyPath:@"bounds" + duration:model.duration + delay:model.delay + curveType:model.curveType + argsModel:model.argsModel + fromValue:[NSValue valueWithCGRect:view.bounds] + toValue:[NSValue valueWithCGRect:bounds]]; + [array addObject:model1]; + } + CGPoint toPoint = CGPointMake(view.layer.position.x + originX, + view.layer.position.y + originY); + if (!CGPointEqualToPoint(view.layer.position, toPoint)) { + GMCModel *model2 = [GMCModel + modelWithKeyPath:@"position" + duration:model.duration + delay:model.delay + curveType:model.curveType + argsModel:model.argsModel + fromValue:[NSValue + valueWithCGPoint:view.layer + .position] + toValue:[NSValue valueWithCGPoint:toPoint]]; + [array addObject:model2]; + } + if ([array count] > 0) { + [view.layer gmc_animateWithGMCModels:array completion:^(BOOL finished) { + }]; + } + } + } + } +} + +- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag { + if ([anim isKindOfClass:[CAKeyframeAnimation class]] && [anim valueForKey:@"gmc_identifier"]) { + CAKeyframeAnimation *keyAnimation = (CAKeyframeAnimation *) anim; + + if (flag) { + NSArray *values = [keyAnimation values]; + if (values && values.count > 0) { + if (!keyAnimation.autoreverses) { + [self setValue:[values lastObject] forKeyPath:keyAnimation.keyPath]; + } else { + [self setValue:[values firstObject] forKeyPath:keyAnimation.keyPath]; + } + } + } + + + NSString *animationID = [anim valueForKey:@"gmc_identifier"]; + + + [self removeAnimationForKey:animationID]; + + [self.gmc_animationKeys removeObjectForKey:animationID]; + + + GMCCompletionBlock block = [keyAnimation valueForKey:@"gmc_completion_block"]; + if (block) { + block(flag); + } + } +} + + +- (NSString *)gmc_serialAnimationWithGMCModels:(NSArray *)models + completion:(GMCCompletionBlock)completion { + NSString *animationKey = [[NSUUID UUID] UUIDString]; + if (self.gmc_animationKeys == nil) { + self.gmc_animationKeys = [NSMutableDictionary dictionary]; + } + [self serialAnimationWithGMCModels:models currentIndex:0 animationKey:animationKey completion:completion]; + return animationKey; +} + + +- (void)serialAnimationWithGMCModels:(NSArray *)models + currentIndex:(NSInteger)currentIndex + animationKey:(NSString *)animationKey + completion:(GMCCompletionBlock)completion { + NSInteger count = models.count; + GMCModel *model = [models objectAtIndex:currentIndex]; + [self.gmc_animationKeys setObject:[NSMutableArray array] forKey:animationKey]; + GMCWeakSelf(self) + [self gmc_animateWithGMCModels:@[model] animationKey:animationKey completion:^(BOOL finished) { + if (finished) { + NSInteger index = currentIndex; + index++; + GMCStrongSelf(self); + if (index < count) { + [self serialAnimationWithGMCModels:models currentIndex:index animationKey:animationKey completion:completion]; + } else { + if (completion != nil) { + completion(finished); + } + } + } else { + if (completion != nil) { + completion(finished); + } + } + }]; + +} + + +- (void)gmc_cancelAnimationWithID:(NSString *)animationID { + if (animationID.length > 0) { + if (self.gmc_animationKeys) { + if (self.gmc_animationKeys[animationID] != nil) { + NSArray *animations = self.gmc_animationKeys[animationID]; + for (NSUInteger i = 0; i < animations.count; i++) { + [self removeAnimationForKey:animations[i]]; + } + [self removeAnimationForKey:animationID]; + } else { + [self removeAnimationForKey:animationID]; + } + } else { + [self removeAnimationForKey:animationID]; + } + [self.gmc_animationKeys removeObjectForKey:animationID]; + } +} + + +- (void)gmc_cancelAllAnimations { + if (self.gmc_animationKeys != nil) { + for (NSString *animationID in self.gmc_animationKeys) { + [self gmc_cancelAnimationWithID:animationID]; + } + [self.gmc_animationKeys removeAllObjects]; + } +} + + +- (void)setGmc_animationKeys:(NSMutableDictionary *)gmc_animationKeys { + objc_setAssociatedObject(self, &kGMCAnimationKeys, gmc_animationKeys, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +- (NSMutableDictionary *)gmc_animationKeys { + return objc_getAssociatedObject(self, &kGMCAnimationKeys); +} + +@end diff --git a/src/iOS/GaiaMotionCurve/GMCDefines.h b/src/iOS/GaiaMotionCurve/GMCDefines.h new file mode 100644 index 0000000..2570447 --- /dev/null +++ b/src/iOS/GaiaMotionCurve/GMCDefines.h @@ -0,0 +1,38 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef GMCDefines_h +#define GMCDefines_h + +#import + +typedef NS_ENUM(NSInteger, GMCCurveType) { + GMCCurveTypeLinear, + GMCCurveTypeCosine, + GMCCurveTypeAccelerate, + GMCCurveTypeDecelerate, + GMCCurveTypeStandard, + GMCCurveTypeCubicBezier = GMCCurveTypeStandard, + GMCCurveTypeAnticipate, + GMCCurveTypeOvershoot, + GMCCurveTypeBounce, + GMCCurveTypeSpring, +}; + +typedef void (^GMCCompletionBlock)(BOOL finished); + +#define GMCWeakSelf(type) __weak typeof(type) weak##type = type; +#define GMCStrongSelf(type) __strong typeof(type) type = weak##type; + +#endif /* GMCDefines_h */ diff --git a/src/iOS/GaiaMotionCurve/GMCFunctions.h b/src/iOS/GaiaMotionCurve/GMCFunctions.h new file mode 100644 index 0000000..8662be6 --- /dev/null +++ b/src/iOS/GaiaMotionCurve/GMCFunctions.h @@ -0,0 +1,53 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#import +#import + + +#ifndef GMCFunctions_h +#define GMCFunctions_h + +CGFloat gmc_linear_curve(CGFloat p); + +CGFloat gmc_cosine_curve(CGFloat p, CGFloat d, CGFloat c); + +CGFloat gmc_decelerate_curve(CGFloat p, CGFloat x1, CGFloat y1, CGFloat x2, + CGFloat y2); + +CGFloat gmc_accelerate_curve(CGFloat p, CGFloat x1, CGFloat y1, CGFloat x2, + CGFloat y2); + +CGFloat gmc_standard_curve(CGFloat p, CGFloat x1, CGFloat y1, CGFloat x2, + CGFloat y2); + +CGFloat gmc_anticipate_curve(CGFloat p, CGFloat d, CGFloat x1, CGFloat y1, + CGFloat x2, CGFloat y2, CGFloat x3, CGFloat y3, + CGFloat x4, CGFloat y4); + +CGFloat gmc_overshoot_curve(CGFloat p, CGFloat d, CGFloat x1, CGFloat y1, + CGFloat x2, CGFloat y2, CGFloat x3, CGFloat y3, + CGFloat x4, CGFloat y4); + +CGFloat gmc_bounce_curve(CGFloat p, CGFloat v, CGFloat d); + +CGFloat gmc_spring_motion_curve(CGFloat p, CGFloat m, CGFloat s, CGFloat d, + CGFloat iv); + +CGFloat gmc_spring_rk4_motion_curve(CGFloat p, CGFloat *lastValue, + CGFloat t, CGFloat f, + CGFloat *v); + +#endif /* GMCFunctions_h */ diff --git a/src/iOS/GaiaMotionCurve/GMCFunctions.m b/src/iOS/GaiaMotionCurve/GMCFunctions.m new file mode 100644 index 0000000..37f30d2 --- /dev/null +++ b/src/iOS/GaiaMotionCurve/GMCFunctions.m @@ -0,0 +1,208 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import "GMCFunctions.h" + +CGFloat gmc_linear_curve(CGFloat p) { + return p; +} + +CGFloat gmc_cosine_curve(CGFloat p, CGFloat d, CGFloat c) { + return d * 0.5 * (1 - cos(p * 2 * c * M_PI)); +} + +CGFloat gmc_decelerate_curve(CGFloat p, CGFloat x1, CGFloat y1, CGFloat x2, + CGFloat y2) { + return gmc_standard_curve(p, x1, y1, x2, y2); +} + +CGFloat gmc_accelerate_curve(CGFloat p, CGFloat x1, CGFloat y1, CGFloat x2, + CGFloat y2) { + return gmc_standard_curve(p, x1, y1, x2, y2); +} + +CGFloat gmc_standard_curve(CGFloat p, CGFloat x1, CGFloat y1, CGFloat x2, + CGFloat y2) { + CGFloat x = p; + CGFloat z; + CGFloat ax, ay, bx, by, cx, cy; + for (int i = 1; i < 14; i++) { + cx = 3.0f * x1; + bx = 3.0f * (x2 - x1) - cx; + ax = 1.0f - cx - bx; + CGFloat b = x * (cx + x * (bx + x * ax)); + z = b - p; + if (fabs(z) < 1e-3) { + break; + } + CGFloat d = cx + x * (2.0f * bx + 3.0f * ax * x); + x -= z / d; + } + cy = 3.0f * y1; + by = 3.0f * (y2 - y1) - cy; + ay = 1.0f - cy - by; + return x * (cy + x * (by + x * ay)); +} + +CGFloat gmc_anticipate_curve(CGFloat p, CGFloat d, CGFloat x1, CGFloat y1, CGFloat x2, + CGFloat y2, CGFloat x3, CGFloat y3, CGFloat x4, + CGFloat y4) { + // Anticipate (0.33,0,0.67,1 )time:0.3 (0.33,0,0.2,1 ) + if (p <= 0.3f) { + return -d * gmc_standard_curve(p * 3.33, x1, y1, x2, y2); + } else { + return -d * gmc_standard_curve(0.3 * 3.33, x1, y1, x2, y2) + (1 + d) * gmc_standard_curve((p - 0.3) * 1.42, x3, y3, x4, y4); + } +} + +CGFloat gmc_bounce_curve(CGFloat p, CGFloat v, CGFloat d) { + CGFloat tp = p; + CGFloat b = 2.75 * v; + if (tp < (1 / b)) { + return pow(b, 2) * tp * tp; + } else if (tp < (2 / b)) { + return pow(b * d, 2) * (tp - 1.5 / b) * (tp - 1.5 / b) + (1 - pow(b * d, 2) * (1 / b - 1.5 / b) * (1 / b - 1.5 / b)); + } else if (tp < (2.5 / b)) { + return pow(b * d, 2) * (tp - 2.25 / b) * (tp - 2.25 / b) + (1 - pow(b * d, 2) * (2 / b - 2.25 / b) * (2 / b - 2.25 / b)); + } else { + return MIN(1.0f, pow(b * d, 2) * (tp - 2.625 / b) * (tp - 2.625 / b) + (1 - pow(b * d, 2) * (2.5 / b - 2.625 / b) * (2.5 / b - 2.625 / b))); + } +} + +CGFloat gmc_overshoot_curve(CGFloat p, CGFloat d, CGFloat x1, CGFloat y1, CGFloat x2, + CGFloat y2, CGFloat x3, CGFloat y3, CGFloat x4, + CGFloat y4) { + //Overshoot (0.33,0,0.3,1 )time:0.5 (0.33,0,0.5,1 ) + if (p <= 0.5f) { + return d * gmc_standard_curve(p * 2, x1, y1, x2, y2); + } else { + return d * gmc_standard_curve(0.5 * 2, x1, y1, x2, y2) - (d - 1) * gmc_standard_curve((p - 0.5) * 2, x3, y3, x4, y4); + } +} + +CGFloat gmc_spring_motion_curve(CGFloat p, CGFloat m, CGFloat s, CGFloat d, + CGFloat iv) { + CGFloat m_w0 = sqrt(s / m); + CGFloat m_zeta = d / (2.0f * sqrt(s * m)); + CGFloat m_wd; + CGFloat m_A; + CGFloat m_B; + if (m_zeta < 1.0f) { + m_wd = m_w0 * sqrt(1.0f - m_zeta * m_zeta); + m_A = 1.0f; + m_B = (m_zeta * m_w0 + -iv) / m_wd; + } else { + m_wd = 0.0f; + m_A = 1.0f; + m_B = -iv + m_w0; + } + CGFloat t; + if (m_zeta < 1.0f) { + t = exp(-p * m_zeta * m_w0) * (m_A * cos(m_wd * p) + m_B * sin(m_wd * p)); + } else { + t = (m_A + m_B * p) * exp(-p * m_w0); + } + return 1.0f - t; +} + +typedef struct { + CGFloat x; + CGFloat v; + CGFloat tension; + CGFloat friction; +} GMCSpringState; + +typedef struct { + CGFloat dx; + CGFloat dv; +} GMCSpringDerivative; + +CGFloat normalizeSpringValue(CGFloat value) { + if (isnan(value)) { + return 0; + } else if (isinf(value)) { + return 0; + } else { + return value; + } +} + +CGFloat springAccelerationForState(GMCSpringState state) { + return -state.tension * state.x - state.friction * state.v; +} + +GMCSpringDerivative springEvaluateState(GMCSpringState initialState) { + GMCSpringDerivative output; + output.dx = initialState.v; + output.dv = springAccelerationForState(initialState); + return output; +} + +GMCSpringDerivative springEvaluateStateWithDerivative(GMCSpringState initialState, CGFloat dt, GMCSpringDerivative derivative) { + + GMCSpringState state; + state.x = initialState.x + derivative.dx * dt; + state.v = initialState.v + derivative.dv * dt; + state.tension = initialState.tension; + state.friction = initialState.friction; + + GMCSpringDerivative output; + output.dx = state.v; + output.dv = springAccelerationForState(state); + + return output; +} + +GMCSpringState springIntegrateState(GMCSpringState state, CGFloat speed) { + GMCSpringDerivative a = springEvaluateState(state); + GMCSpringDerivative b = springEvaluateStateWithDerivative(state, speed * 0.5, a); + GMCSpringDerivative c = springEvaluateStateWithDerivative(state, speed * 0.5, b); + GMCSpringDerivative d = springEvaluateStateWithDerivative(state, speed, c); + + CGFloat tx = (a.dx + 2.0 * (b.dx + c.dx) + d.dx); + CGFloat ty = (a.dv + 2.0 * (b.dv + c.dv) + d.dv); + + CGFloat dxdt = 1.0 / 6.0 * tx; + CGFloat dvdt = 1.0 / 6.0 * ty; + + GMCSpringState output = state; + + output.x = state.x + dxdt * speed; + output.v = state.v + dvdt * speed; + + return output; +} + +CGFloat gmc_spring_rk4_motion_curve(CGFloat p, CGFloat *lastValue, CGFloat t, CGFloat f, CGFloat *v) { + CGFloat result; + if (p == 0.0f) { + result = 0.0f; + } else { + GMCSpringState before; + before.x = *lastValue - 1.0f; + before.v = *v; + before.tension = t; + before.friction = f; + + GMCSpringState after = springIntegrateState(before, 1 / 60.0f); + *lastValue = 1 + after.x; + *v = after.v; + + *lastValue = normalizeSpringValue(*lastValue); + *v = normalizeSpringValue(*v); + + result = *lastValue; + } + return result; +} diff --git a/src/iOS/GaiaMotionCurve/GMCHelper.h b/src/iOS/GaiaMotionCurve/GMCHelper.h new file mode 100644 index 0000000..128e5d8 --- /dev/null +++ b/src/iOS/GaiaMotionCurve/GMCHelper.h @@ -0,0 +1,42 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#import +#import + +@class GMCModel; + +NS_ASSUME_NONNULL_BEGIN + +@interface GMCHelper : NSObject + + ++ (NSArray *)valuesByCurveModel:(GMCModel *)model; + +/* + count > 1 + */ ++ (NSArray *)valuesByCurveModel:(GMCModel *)model valueCount:(NSInteger)count; + + +/* + 0 < percent <= 1 + */ ++ (NSValue *)valueByCurveModel:(GMCModel *)model progressPercent:(CGFloat)percent; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/iOS/GaiaMotionCurve/GMCHelper.m b/src/iOS/GaiaMotionCurve/GMCHelper.m new file mode 100644 index 0000000..c96955c --- /dev/null +++ b/src/iOS/GaiaMotionCurve/GMCHelper.m @@ -0,0 +1,363 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import "GMCHelper.h" +#import "GMCModel.h" +#import "GMCModel+Internal.h" +#import "GMCFunctions.h" + +@implementation GMCHelper + ++ (NSArray *)valuesByCurveModel:(GMCModel *)model { + return [self valuesByCurveModel:model valueCount:60]; +} + + ++ (NSValue *)valueByCurveModel:(GMCModel *)model progressPercent:(CGFloat)percent { + CGFloat tc = 60; + NSMutableArray *values = [NSMutableArray array]; + CGFloat t = 0.0; + CGFloat dt = 1.0 / (tc - 1); + CGFloat count = MAX(1, round(tc * percent)); + if (model.fromValue == nil || model.toValue == nil || + strcmp(model.fromValue.objCType, model.toValue.objCType) != 0) { + } else { + if (strcmp(model.fromValue.objCType, @encode(CGFloat)) == 0) { + CGFloat fromValue = [model.fromValue gmc_CGFloatValue]; + CGFloat toValue = [model.toValue gmc_CGFloatValue]; + CGFloat lastValue = 0.0f; + CGFloat lastVelocity = (model.curveType == GMCCurveTypeSpring && [model.argsModel isKindOfClass:[GMCRK4SpringArgsModel class]]) ? [(GMCRK4SpringArgsModel *) model.argsModel velocity] : 0.0f; + for (NSUInteger frame = 0; frame < count; ++frame, t += dt) { + CGFloat delta = [GMCHelper computeCurvedStep:t + lastValue:&lastValue + lastVelocity:&lastVelocity + type:model.curveType + model:model.argsModel]; + CGFloat value = fromValue + delta * (toValue - fromValue); + [values addObject:[NSValue gmc_valueWithCGFloat:(CGFloat) value]]; + } + } else if (strcmp(model.fromValue.objCType, @encode(CGPoint)) == 0) { + CGPoint fromPoint = [model.fromValue CGPointValue]; + CGPoint toPoint = [model.toValue CGPointValue]; + CGFloat lastValue = 0.0f; + CGFloat lastVelocity = (model.curveType == GMCCurveTypeSpring && [model.argsModel isKindOfClass:[GMCRK4SpringArgsModel class]]) ? [(GMCRK4SpringArgsModel *) model.argsModel velocity] : 0.0f; + for (NSUInteger frame = 0; frame < count; ++frame, t += dt) { + CGFloat delta = [GMCHelper computeCurvedStep:t + lastValue:&lastValue + lastVelocity:&lastVelocity + type:model.curveType + model:model.argsModel]; + CGFloat x = fromPoint.x + delta * (toPoint.x - fromPoint.x); + CGFloat y = fromPoint.y + delta * (toPoint.y - fromPoint.y); + [values addObject:[NSValue valueWithCGPoint:CGPointMake(x, y)]]; + } + } else if (strcmp(model.fromValue.objCType, @encode(CGSize)) == 0) { + CGSize fromSize = [model.fromValue CGSizeValue]; + CGSize toSize = [model.toValue CGSizeValue]; + CGFloat lastValue = 0.0f; + CGFloat lastVelocity = (model.curveType == GMCCurveTypeSpring && [model.argsModel isKindOfClass:[GMCRK4SpringArgsModel class]]) ? [(GMCRK4SpringArgsModel *) model.argsModel velocity] : 0.0f; + for (NSUInteger frame = 0; frame < count; ++frame, t += dt) { + CGFloat delta = [GMCHelper computeCurvedStep:t + lastValue:&lastValue + lastVelocity:&lastVelocity + type:model.curveType + model:model.argsModel]; + CGFloat width = fromSize.width + delta * (toSize.width - fromSize.width); + CGFloat height = fromSize.height + delta * (toSize.height - fromSize.height); + [values addObject:[NSValue valueWithCGSize:CGSizeMake(width, height)]]; + } + } else if (strcmp(model.fromValue.objCType, @encode(CGRect)) == 0) { + CGRect fromRect = [model.fromValue CGRectValue]; + CGRect toRect = [model.toValue CGRectValue]; + CGFloat lastValue = 0.0f; + CGFloat lastVelocity = (model.curveType == GMCCurveTypeSpring && [model.argsModel isKindOfClass:[GMCRK4SpringArgsModel class]]) ? [(GMCRK4SpringArgsModel *) model.argsModel velocity] : 0.0f; + for (NSUInteger frame = 0; frame < count; ++frame, t += dt) { + CGFloat delta = [GMCHelper computeCurvedStep:t + lastValue:&lastValue + lastVelocity:&lastVelocity + type:model.curveType + model:model.argsModel]; + CGFloat x = fromRect.origin.x + delta * (toRect.origin.x - fromRect.origin.x); + CGFloat y = fromRect.origin.y + delta * (toRect.origin.y - fromRect.origin.y); + CGFloat width = fromRect.size.width + delta * (toRect.size.width - fromRect.size.width); + CGFloat height = fromRect.size.height + delta * (toRect.size.height - fromRect.size.height); + [values addObject:[NSValue + valueWithCGRect:CGRectMake(x, y, width, height)]]; + } + } else if (strcmp(model.fromValue.objCType, @encode(CGAffineTransform)) == + 0) { + CGAffineTransform fromTransform = + [model.fromValue CGAffineTransformValue]; + CGAffineTransform toTransform = [model.toValue CGAffineTransformValue]; + CGPoint fromT = CGPointMake(fromTransform.tx, fromTransform.ty); + CGPoint toT = CGPointMake(toTransform.tx, toTransform.ty); + CGFloat fromS = hypot(fromTransform.a, fromTransform.c); + CGFloat toS = hypot(toTransform.a, toTransform.c); + CGFloat fromR = atan2(fromTransform.c, fromTransform.a); + CGFloat toR = atan2(toTransform.c, toTransform.a); + CGFloat deltaR = toR - fromR; + if (deltaR < -M_PI) { + deltaR += (2 * M_PI); + } else if (deltaR > M_PI) { + deltaR -= (2 * M_PI); + } + CGFloat lastValue = 0.0f; + CGFloat lastVelocity = (model.curveType == GMCCurveTypeSpring && [model.argsModel isKindOfClass:[GMCRK4SpringArgsModel class]]) ? [(GMCRK4SpringArgsModel *) model.argsModel velocity] : 0.0f; + for (NSUInteger frame = 0; frame < count; ++frame, t += dt) { + CGFloat inter = [GMCHelper computeCurvedStep:t + lastValue:&lastValue + lastVelocity:&lastVelocity + type:model.curveType + model:model.argsModel]; + CGFloat translateX = + fromT.x + inter * (toT.x - fromT.x); + CGFloat translateY = + fromT.y + inter * (toT.y - fromT.y); + CGFloat scale = fromS + inter * (toS - fromS); + CGFloat rotate = fromR + inter * deltaR; + CGAffineTransform affineTransform = CGAffineTransformMake( + scale * cos(rotate), -scale * sin(rotate), scale * sin(rotate), + scale * cos(rotate), translateX, translateY); + CATransform3D transform = + CATransform3DMakeAffineTransform(affineTransform); + [values addObject:[NSValue valueWithCATransform3D:transform]]; + } + } else if (strcmp(model.fromValue.objCType, @encode(CGColorRef)) == 0) { + UIColor *fromColor = [UIColor colorWithCGColor:[model.fromValue gmc_CGColorValue]]; + UIColor *toColor = [UIColor colorWithCGColor:[model.toValue gmc_CGColorValue]]; + if (fromColor && toColor) { + if ([fromColor isKindOfClass:[UIColor class]] && + [toColor isKindOfClass:[UIColor class]]) { + CGFloat fromRed, fromGreen, fromBlue, fromAlpha; + CGFloat toRed, toGreen, toBlue, toAlpha; + [fromColor getRed:&fromRed + green:&fromGreen + blue:&fromBlue + alpha:&fromAlpha]; + [toColor getRed:&toRed green:&toGreen blue:&toBlue alpha:&toAlpha]; + CGFloat lastValue = 0.0f; + CGFloat lastVelocity = (model.curveType == GMCCurveTypeSpring && [model.argsModel isKindOfClass:[GMCRK4SpringArgsModel class]]) ? [(GMCRK4SpringArgsModel *) model.argsModel velocity] : 0.0f; + for (NSUInteger frame = 0; frame < count; ++frame, t += dt) { + CGFloat delta = [GMCHelper computeCurvedStep:t + lastValue:&lastValue + lastVelocity:&lastVelocity + type:model.curveType + model:model.argsModel]; + CGFloat red = fromRed + delta * (toRed - fromRed); + CGFloat green = fromGreen + delta * (toGreen - fromGreen); + CGFloat blue = fromBlue + delta * (toBlue - fromBlue); + CGFloat alpha = fromAlpha + delta * (toAlpha - fromAlpha); + [values addObject:(id) [UIColor colorWithRed:red + green:green + blue:blue + alpha:alpha] + .CGColor]; + } + } + } + } + } + + return [values lastObject]; +} + ++ (NSArray *)valuesByCurveModel:(GMCModel *)model valueCount:(NSInteger)count { + NSMutableArray *values = [NSMutableArray array]; + CGFloat t = 0.0; + CGFloat dt = 1.0 / (count - 1); + + if (model.fromValue == nil || model.toValue == nil || + strcmp(model.fromValue.objCType, model.toValue.objCType) != 0) { + } else { + if (strcmp(model.fromValue.objCType, @encode(CGFloat)) == 0) { + CGFloat fromValue = [model.fromValue gmc_CGFloatValue]; + CGFloat toValue = [model.toValue gmc_CGFloatValue]; + CGFloat lastValue = 0.0f; + CGFloat lastVelocity = (model.curveType == GMCCurveTypeSpring && [model.argsModel isKindOfClass:[GMCRK4SpringArgsModel class]]) ? [(GMCRK4SpringArgsModel *) model.argsModel velocity] : 0.0f; + for (NSUInteger frame = 0; frame < count; ++frame, t += dt) { + CGFloat delta = [GMCHelper computeCurvedStep:t + lastValue:&lastValue + lastVelocity:&lastVelocity + type:model.curveType + model:model.argsModel]; + CGFloat value = fromValue + delta * (toValue - fromValue); + [values addObject:[NSNumber numberWithFloat:(CGFloat) value]]; + } + } else if (strcmp(model.fromValue.objCType, @encode(CGPoint)) == 0) { + CGPoint fromPoint = [model.fromValue CGPointValue]; + CGPoint toPoint = [model.toValue CGPointValue]; + CGFloat lastValue = 0.0f; + CGFloat lastVelocity = (model.curveType == GMCCurveTypeSpring && [model.argsModel isKindOfClass:[GMCRK4SpringArgsModel class]]) ? [(GMCRK4SpringArgsModel *) model.argsModel velocity] : 0.0f; + for (NSUInteger frame = 0; frame < count; ++frame, t += dt) { + CGFloat delta = [GMCHelper computeCurvedStep:t + lastValue:&lastValue + lastVelocity:&lastVelocity + type:model.curveType + model:model.argsModel]; + CGFloat x = fromPoint.x + delta * (toPoint.x - fromPoint.x); + CGFloat y = fromPoint.y + delta * (toPoint.y - fromPoint.y); + [values addObject:[NSValue valueWithCGPoint:CGPointMake(x, y)]]; + } + } else if (strcmp(model.fromValue.objCType, @encode(CGSize)) == 0) { + CGSize fromSize = [model.fromValue CGSizeValue]; + CGSize toSize = [model.toValue CGSizeValue]; + CGFloat lastValue = 0.0f; + CGFloat lastVelocity = (model.curveType == GMCCurveTypeSpring && [model.argsModel isKindOfClass:[GMCRK4SpringArgsModel class]]) ? [(GMCRK4SpringArgsModel *) model.argsModel velocity] : 0.0f; + for (NSUInteger frame = 0; frame < count; ++frame, t += dt) { + CGFloat delta = [GMCHelper computeCurvedStep:t + lastValue:&lastValue + lastVelocity:&lastVelocity + type:model.curveType + model:model.argsModel]; + CGFloat width = fromSize.width + delta * (toSize.width - fromSize.width); + CGFloat height = fromSize.height + delta * (toSize.height - fromSize.height); + [values addObject:[NSValue valueWithCGSize:CGSizeMake(width, height)]]; + } + } else if (strcmp(model.fromValue.objCType, @encode(CGRect)) == 0) { + CGRect fromRect = [model.fromValue CGRectValue]; + CGRect toRect = [model.toValue CGRectValue]; + CGFloat lastValue = 0.0f; + CGFloat lastVelocity = (model.curveType == GMCCurveTypeSpring && [model.argsModel isKindOfClass:[GMCRK4SpringArgsModel class]]) ? [(GMCRK4SpringArgsModel *) model.argsModel velocity] : 0.0f; + for (NSUInteger frame = 0; frame < count; ++frame, t += dt) { + CGFloat delta = [GMCHelper computeCurvedStep:t + lastValue:&lastValue + lastVelocity:&lastVelocity + type:model.curveType + model:model.argsModel]; + CGFloat x = fromRect.origin.x + delta * (toRect.origin.x - fromRect.origin.x); + CGFloat y = fromRect.origin.y + delta * (toRect.origin.y - fromRect.origin.y); + CGFloat width = fromRect.size.width + delta * (toRect.size.width - fromRect.size.width); + CGFloat height = fromRect.size.height + delta * (toRect.size.height - fromRect.size.height); + [values addObject:[NSValue + valueWithCGRect:CGRectMake(x, y, width, height)]]; + } + } else if (strcmp(model.fromValue.objCType, @encode(CGAffineTransform)) == + 0) { + CGAffineTransform fromTransform = + [model.fromValue CGAffineTransformValue]; + CGAffineTransform toTransform = [model.toValue CGAffineTransformValue]; + CGPoint fromT = CGPointMake(fromTransform.tx, fromTransform.ty); + CGPoint toT = CGPointMake(toTransform.tx, toTransform.ty); + CGFloat fromS = hypot(fromTransform.a, fromTransform.c); + CGFloat toS = hypot(toTransform.a, toTransform.c); + CGFloat fromR = atan2(fromTransform.c, fromTransform.a); + CGFloat toR = atan2(toTransform.c, toTransform.a); + CGFloat deltaR = toR - fromR; + if (deltaR < -M_PI) { + deltaR += (2 * M_PI); + } else if (deltaR > M_PI) { + deltaR -= (2 * M_PI); + } + CGFloat lastValue = 0.0f; + CGFloat lastVelocity = (model.curveType == GMCCurveTypeSpring && [model.argsModel isKindOfClass:[GMCRK4SpringArgsModel class]]) ? [(GMCRK4SpringArgsModel *) model.argsModel velocity] : 0.0f; + for (NSUInteger frame = 0; frame < count; ++frame, t += dt) { + CGFloat inter = [GMCHelper computeCurvedStep:t + lastValue:&lastValue + lastVelocity:&lastVelocity + type:model.curveType + model:model.argsModel]; + CGFloat translateX = + fromT.x + inter * (toT.x - fromT.x); + CGFloat translateY = + fromT.y + inter * (toT.y - fromT.y); + CGFloat scale = fromS + inter * (toS - fromS); + CGFloat rotate = fromR + inter * deltaR; + CGAffineTransform affineTransform = CGAffineTransformMake( + scale * cos(rotate), -scale * sin(rotate), scale * sin(rotate), + scale * cos(rotate), translateX, translateY); + CATransform3D transform = + CATransform3DMakeAffineTransform(affineTransform); + [values addObject:[NSValue valueWithCATransform3D:transform]]; + } + } else if (strcmp(model.fromValue.objCType, @encode(CGColorRef)) == 0) { + UIColor *fromColor = [UIColor colorWithCGColor:[model.fromValue gmc_CGColorValue]]; + UIColor *toColor = [UIColor colorWithCGColor:[model.toValue gmc_CGColorValue]]; + if (fromColor && toColor) { + if ([fromColor isKindOfClass:[UIColor class]] && + [toColor isKindOfClass:[UIColor class]]) { + CGFloat fromRed, fromGreen, fromBlue, fromAlpha; + CGFloat toRed, toGreen, toBlue, toAlpha; + [fromColor getRed:&fromRed + green:&fromGreen + blue:&fromBlue + alpha:&fromAlpha]; + [toColor getRed:&toRed green:&toGreen blue:&toBlue alpha:&toAlpha]; + CGFloat lastValue = 0.0f; + CGFloat lastVelocity = (model.curveType == GMCCurveTypeSpring && [model.argsModel isKindOfClass:[GMCRK4SpringArgsModel class]]) ? [(GMCRK4SpringArgsModel *) model.argsModel velocity] : 0.0f; + for (NSUInteger frame = 0; frame < count; ++frame, t += dt) { + CGFloat delta = [GMCHelper computeCurvedStep:t + lastValue:&lastValue + lastVelocity:&lastVelocity + type:model.curveType + model:model.argsModel]; + CGFloat red = fromRed + delta * (toRed - fromRed); + CGFloat green = fromGreen + delta * (toGreen - fromGreen); + CGFloat blue = fromBlue + delta * (toBlue - fromBlue); + CGFloat alpha = fromAlpha + delta * (toAlpha - fromAlpha); + [values addObject:(id) [UIColor colorWithRed:red + green:green + blue:blue + alpha:alpha] + .CGColor]; + } + } + } + } + } + + return values; +} + ++ (CGFloat)computeCurvedStep:(CGFloat)step + lastValue:(CGFloat *)lastValue + lastVelocity:(CGFloat *)lastVelocity + type:(GMCCurveType)curveType + model:(GMCBaseArgsModel *)argsModel { + CGFloat value; + if (curveType == GMCCurveTypeOvershoot) { + GMCAnticipateArgsModel *overshootArgsModel = (GMCAnticipateArgsModel *) argsModel; + value = gmc_overshoot_curve(step, overshootArgsModel.d, overshootArgsModel.x1, overshootArgsModel.y1, overshootArgsModel.x2, overshootArgsModel.y2, overshootArgsModel.x3, overshootArgsModel.y3, overshootArgsModel.x4, overshootArgsModel.y4); + } else if (curveType == GMCCurveTypeAccelerate) { + GMCAccelerateArgsModel *accelerateArgsModel = (GMCAccelerateArgsModel *) argsModel; + value = gmc_accelerate_curve(step, accelerateArgsModel.x1, accelerateArgsModel.y1, accelerateArgsModel.x2, accelerateArgsModel.y2); + } else if (curveType == GMCCurveTypeDecelerate) { + GMCDecelerateArgsModel *decelerateArgsModel = (GMCDecelerateArgsModel *) argsModel; + value = gmc_decelerate_curve(step, decelerateArgsModel.x1, decelerateArgsModel.y1, decelerateArgsModel.x2, decelerateArgsModel.y2); + } else if (curveType == GMCCurveTypeBounce) { + GMCBounceArgsModel *bounceArgsModel = (GMCBounceArgsModel *) argsModel; + value = gmc_bounce_curve(step, bounceArgsModel.v, bounceArgsModel.d); + } else if (curveType == GMCCurveTypeCosine) { + GMCCosineArgsModel *cosineArgsModel = (GMCCosineArgsModel *) argsModel; + value = gmc_cosine_curve(step, cosineArgsModel.d, cosineArgsModel.c); + } else if (curveType == GMCCurveTypeAnticipate) { + GMCAnticipateArgsModel *anticipateArgsModel = (GMCAnticipateArgsModel *) argsModel; + value = gmc_anticipate_curve(step, anticipateArgsModel.d, anticipateArgsModel.x1, anticipateArgsModel.y1, anticipateArgsModel.x2, anticipateArgsModel.y2, anticipateArgsModel.x3, anticipateArgsModel.y3, anticipateArgsModel.x4, anticipateArgsModel.y4); + } else if (curveType == GMCCurveTypeStandard) { + GMCStandardArgsModel *standardArgsModel = (GMCStandardArgsModel *) argsModel; + value = gmc_standard_curve(step, standardArgsModel.x1, standardArgsModel.y1, standardArgsModel.x2, standardArgsModel.y2); + } else if (curveType == GMCCurveTypeSpring) { + if ([argsModel isKindOfClass:[GMCDefaultSpringArgsModel class]]) { + GMCDefaultSpringArgsModel *springArgsModel = (GMCDefaultSpringArgsModel *) argsModel; + value = gmc_spring_motion_curve(step, springArgsModel.mass, springArgsModel.stiffness, springArgsModel.damping, springArgsModel.velocity); + } else { + GMCRK4SpringArgsModel *rk4ArgsModel = (GMCRK4SpringArgsModel *) argsModel; + value = gmc_spring_rk4_motion_curve(step, lastValue, rk4ArgsModel.tension, rk4ArgsModel.friction, lastVelocity); + } + } else { + value = gmc_linear_curve(step); + } + return value; +} + +@end diff --git a/src/iOS/GaiaMotionCurve/GMCModel+Internal.h b/src/iOS/GaiaMotionCurve/GMCModel+Internal.h new file mode 100644 index 0000000..255383b --- /dev/null +++ b/src/iOS/GaiaMotionCurve/GMCModel+Internal.h @@ -0,0 +1,105 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#import "GMCModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface GMCBaseArgsModel : NSObject + +@end + +@interface GMCStandardArgsModel : GMCBaseArgsModel + +@property(nonatomic, assign) CGFloat x1; +@property(nonatomic, assign) CGFloat y1; +@property(nonatomic, assign) CGFloat x2; +@property(nonatomic, assign) CGFloat y2; + +@end + +@interface GMCAccelerateArgsModel : GMCStandardArgsModel + +@end + +@interface GMCDecelerateArgsModel : GMCStandardArgsModel + +@end + +@interface GMCAnticipateArgsModel : GMCBaseArgsModel + +@property(nonatomic, assign) CGFloat d; +@property(nonatomic, assign) CGFloat x1; +@property(nonatomic, assign) CGFloat y1; +@property(nonatomic, assign) CGFloat x2; +@property(nonatomic, assign) CGFloat y2; +@property(nonatomic, assign) CGFloat x3; +@property(nonatomic, assign) CGFloat y3; +@property(nonatomic, assign) CGFloat x4; +@property(nonatomic, assign) CGFloat y4; + +@end + +@interface GMCOvershootArgsModel : GMCAnticipateArgsModel + +@end + +@interface GMCBounceArgsModel : GMCBaseArgsModel + +@property(nonatomic, assign) CGFloat v; +@property(nonatomic, assign) CGFloat d; + +@end + +@interface GMCDefaultSpringArgsModel : GMCBaseArgsModel + +@property(nonatomic, assign) CGFloat mass; +@property(nonatomic, assign) CGFloat stiffness; +@property(nonatomic, assign) CGFloat damping; +@property(nonatomic, assign) CGFloat velocity; + +@end + +@interface GMCRK4SpringArgsModel : GMCBaseArgsModel + +@property(nonatomic, assign) CGFloat tension; +@property(nonatomic, assign) CGFloat friction; +@property(nonatomic, assign) CGFloat velocity; + +@end + +@interface GMCCosineArgsModel : GMCBaseArgsModel + +@property(nonatomic, assign) CGFloat d; +@property(nonatomic, assign) CGFloat c; + +@end + + +@interface GMCModel (Internal) + +@property(nonatomic, strong) GMCBaseArgsModel *argsModel; + ++ (GMCModel *)modelWithKeyPath:(NSString *)keyPath + duration:(CFTimeInterval)duration + delay:(CFTimeInterval)delay + curveType:(GMCCurveType)curveType + argsModel:(nullable GMCBaseArgsModel *)argsModel + fromValue:(NSValue *)fromValue + toValue:(NSValue *)toValue; + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/iOS/GaiaMotionCurve/GMCModel+Internal.m b/src/iOS/GaiaMotionCurve/GMCModel+Internal.m new file mode 100644 index 0000000..353a4fb --- /dev/null +++ b/src/iOS/GaiaMotionCurve/GMCModel+Internal.m @@ -0,0 +1,79 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import "GMCModel+Internal.h" +#import + +@implementation GMCBaseArgsModel +@end + +@implementation GMCStandardArgsModel +@end + +@implementation GMCAccelerateArgsModel +@end + +@implementation GMCDecelerateArgsModel +@end + +@implementation GMCAnticipateArgsModel +@end + +@implementation GMCOvershootArgsModel +@end + +@implementation GMCBounceArgsModel +@end + +@implementation GMCDefaultSpringArgsModel +@end + +@implementation GMCRK4SpringArgsModel +@end + +@implementation GMCCosineArgsModel +@end + + +@implementation GMCModel (Internal) + +static NSString *kGMCModelArgsModelKey = @"kGMCModelArgsModelKey"; + +- (void)setArgsModel:(GMCBaseArgsModel *)argsModel { + objc_setAssociatedObject(self, &kGMCModelArgsModelKey, argsModel, + OBJC_ASSOCIATION_RETAIN); +} + +- (GMCBaseArgsModel *)argsModel { + return objc_getAssociatedObject(self, &kGMCModelArgsModelKey); +} + ++ (GMCModel *)modelWithKeyPath:(NSString *)keyPath + duration:(CFTimeInterval)duration + delay:(CFTimeInterval)delay + curveType:(GMCCurveType)curveType + argsModel:(nullable GMCBaseArgsModel *)argsModel + fromValue:(NSValue *)fromValue + toValue:(NSValue *)toValue { + GMCModel *model = [GMCModel modelWithKeyPath:keyPath + duration:duration + delay:delay + curveType:curveType + fromValue:fromValue + toValue:toValue]; + model.argsModel = argsModel; + return model; +} + +@end diff --git a/src/iOS/GaiaMotionCurve/GMCModel.h b/src/iOS/GaiaMotionCurve/GMCModel.h new file mode 100644 index 0000000..344608a --- /dev/null +++ b/src/iOS/GaiaMotionCurve/GMCModel.h @@ -0,0 +1,88 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#import +#import +#import "GMCDefines.h" +#import "NSValue+GMCCGFloat.h" +#import "NSValue+GMCUIColor.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface GMCModel : NSObject + +//default 0 +@property(nonatomic, assign) NSInteger repeatCount; + +//default NO +@property(nonatomic, assign) BOOL autoReverse; + +//animation key path +@property(nonatomic, strong) NSString *keyPath; + +//second +@property(nonatomic, assign) CFTimeInterval duration; + +//second +@property(nonatomic, assign) CFTimeInterval delay; + +//motion curve type +@property(nonatomic, assign) GMCCurveType curveType; + +@property(nonatomic, strong) NSValue *fromValue; + +@property(nonatomic, strong) NSValue *toValue; + + ++ (GMCModel *)modelWithKeyPath:(NSString *)keyPath + duration:(CFTimeInterval)duration + delay:(CFTimeInterval)delay + curveType:(GMCCurveType)curveType + fromValue:(NSValue *)fromValue + toValue:(NSValue *)toValue; + + ++ (GMCModel *)modelWithKeyPath:(NSString *)keyPath + duration:(CFTimeInterval)duration + delay:(CFTimeInterval)delay + curveType:(GMCCurveType)curveType + customArgs:(nullable NSDictionary *)customArgs + fromValue:(NSValue *)fromValue + toValue:(NSValue *)toValue; + + ++ (GMCModel *)modelWithKeyPath:(NSString *)keyPath + duration:(CFTimeInterval)duration + delay:(CFTimeInterval)delay + repeatCount:(NSInteger)repeatCount + autoReverse:(BOOL)autoReverse + curveType:(GMCCurveType)curveType + fromValue:(NSValue *)fromValue + toValue:(NSValue *)toValue; + + ++ (GMCModel *)modelWithKeyPath:(NSString *)keyPath + duration:(CFTimeInterval)duration + delay:(CFTimeInterval)delay + repeatCount:(NSInteger)repeatCount + autoReverse:(BOOL)autoReverse + curveType:(GMCCurveType)curveType + customArgs:(nullable NSDictionary *)customArgs + fromValue:(NSValue *)fromValue + toValue:(NSValue *)toValue; + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/iOS/GaiaMotionCurve/GMCModel.m b/src/iOS/GaiaMotionCurve/GMCModel.m new file mode 100644 index 0000000..2ec1195 --- /dev/null +++ b/src/iOS/GaiaMotionCurve/GMCModel.m @@ -0,0 +1,169 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#import "GMCModel.h" +#import "GMCModel+Internal.h" + +@implementation GMCModel + ++ (GMCModel *)modelWithKeyPath:(NSString *)keyPath + duration:(CFTimeInterval)duration + delay:(CFTimeInterval)delay + curveType:(GMCCurveType)curveType + fromValue:(NSValue *)fromValue + toValue:(NSValue *)toValue { + return [GMCModel modelWithKeyPath:keyPath + duration:duration + delay:delay + curveType:curveType + customArgs:nil + fromValue:fromValue + toValue:toValue]; +} + ++ (GMCModel *)modelWithKeyPath:(NSString *)keyPath + duration:(CFTimeInterval)duration + delay:(CFTimeInterval)delay + curveType:(GMCCurveType)curveType + customArgs:(nullable NSDictionary *)customArgs + fromValue:(NSValue *)fromValue + toValue:(NSValue *)toValue { + return [GMCModel modelWithKeyPath:keyPath + duration:duration + delay:delay + repeatCount:0 + autoReverse:NO + curveType:curveType + customArgs:customArgs + fromValue:fromValue + toValue:toValue]; + +} + + ++ (GMCModel *)modelWithKeyPath:(NSString *)keyPath + duration:(CFTimeInterval)duration + delay:(CFTimeInterval)delay + repeatCount:(NSInteger)repeatCount + autoReverse:(BOOL)autoReverse + curveType:(GMCCurveType)curveType + fromValue:(NSValue *)fromValue + toValue:(NSValue *)toValue { + return [GMCModel modelWithKeyPath:keyPath + duration:duration + delay:delay + repeatCount:repeatCount + autoReverse:autoReverse + curveType:curveType + customArgs:nil + fromValue:fromValue + toValue:toValue]; +} + + ++ (GMCModel *)modelWithKeyPath:(NSString *)keyPath + duration:(CFTimeInterval)duration + delay:(CFTimeInterval)delay + repeatCount:(NSInteger)repeatCount + autoReverse:(BOOL)autoReverse + curveType:(GMCCurveType)curveType + customArgs:(nullable NSDictionary *)customArgs + fromValue:(NSValue *)fromValue + toValue:(NSValue *)toValue { + GMCModel *model = [[GMCModel alloc] init]; + model.keyPath = keyPath; + model.duration = duration; + model.delay = delay; + model.repeatCount = repeatCount; + model.autoReverse = autoReverse; + model.curveType = curveType; + model.fromValue = fromValue; + model.toValue = toValue; + if (curveType == GMCCurveTypeCosine) { + GMCCosineArgsModel *argsModel = [[GMCCosineArgsModel alloc] init]; + argsModel.d = customArgs[@"d"] != nil ? [customArgs[@"d"] floatValue] : 1.0f; + argsModel.c = customArgs[@"c"] != nil ? [customArgs[@"c"] floatValue] : 1.0f; + model.argsModel = argsModel; + } else if (curveType == GMCCurveTypeBounce) { + GMCBounceArgsModel *argsModel = [[GMCBounceArgsModel alloc] init]; + argsModel.v = customArgs[@"v"] != nil ? [customArgs[@"v"] floatValue] : 1.0f; + argsModel.d = customArgs[@"d"] != nil ? [customArgs[@"d"] floatValue] : 1.0f; + model.argsModel = argsModel; + } else if (curveType == GMCCurveTypeAccelerate) { + GMCAccelerateArgsModel *argsModel = [[GMCAccelerateArgsModel alloc] init]; + argsModel.x1 = customArgs[@"x1"] != nil ? [customArgs[@"x1"] floatValue] : 0.4f; + argsModel.y1 = customArgs[@"y1"] != nil ? [customArgs[@"y1"] floatValue] : 0.0f; + argsModel.x2 = customArgs[@"x2"] != nil ? [customArgs[@"x2"] floatValue] : 1.0f; + argsModel.y2 = customArgs[@"y2"] != nil ? [customArgs[@"y2"] floatValue] : 1.0f; + model.argsModel = argsModel; + } else if (curveType == GMCCurveTypeDecelerate) { + GMCDecelerateArgsModel *argsModel = [[GMCDecelerateArgsModel alloc] init]; + argsModel.x1 = customArgs[@"x1"] != nil ? [customArgs[@"x1"] floatValue] : 0.0f; + argsModel.y1 = customArgs[@"y1"] != nil ? [customArgs[@"y1"] floatValue] : 0.0f; + argsModel.x2 = customArgs[@"x2"] != nil ? [customArgs[@"x2"] floatValue] : 0.1f; + argsModel.y2 = customArgs[@"y2"] != nil ? [customArgs[@"y2"] floatValue] : 1.0f; + model.argsModel = argsModel; + } else if (curveType == GMCCurveTypeStandard) { + GMCStandardArgsModel *argsModel = [[GMCStandardArgsModel alloc] init]; + argsModel.x1 = customArgs[@"x1"] != nil ? [customArgs[@"x1"] floatValue] : 0.4f; + argsModel.y1 = customArgs[@"y1"] != nil ? [customArgs[@"y1"] floatValue] : 0.0f; + argsModel.x2 = customArgs[@"x2"] != nil ? [customArgs[@"x2"] floatValue] : 0.1f; + argsModel.y2 = customArgs[@"y2"] != nil ? [customArgs[@"y2"] floatValue] : 1.0f; + model.argsModel = argsModel; + } else if (curveType == GMCCurveTypeOvershoot) { + GMCOvershootArgsModel *argsModel = [[GMCOvershootArgsModel alloc] init]; + argsModel.d = customArgs[@"d"] != nil ? [customArgs[@"d"] floatValue] : 1.2f; + argsModel.x1 = customArgs[@"x1"] != nil ? [customArgs[@"x1"] floatValue] : 0.33f; + argsModel.y1 = customArgs[@"y1"] != nil ? [customArgs[@"y1"] floatValue] : 0.0f; + argsModel.x2 = customArgs[@"x2"] != nil ? [customArgs[@"x2"] floatValue] : 0.3f; + argsModel.y2 = customArgs[@"y2"] != nil ? [customArgs[@"y2"] floatValue] : 1.0f; + argsModel.x3 = customArgs[@"x3"] != nil ? [customArgs[@"x3"] floatValue] : 0.33f; + argsModel.y3 = customArgs[@"y3"] != nil ? [customArgs[@"y3"] floatValue] : 0.0f; + argsModel.x4 = customArgs[@"x4"] != nil ? [customArgs[@"x4"] floatValue] : 0.5f; + argsModel.y4 = customArgs[@"y4"] != nil ? [customArgs[@"y4"] floatValue] : 1.0f; + model.argsModel = argsModel; + } else if (curveType == GMCCurveTypeAnticipate) { + GMCAnticipateArgsModel *argsModel = [[GMCAnticipateArgsModel alloc] init]; + argsModel.d = customArgs[@"d"] != nil ? [customArgs[@"d"] floatValue] : 0.2f; + argsModel.x1 = customArgs[@"x1"] != nil ? [customArgs[@"x1"] floatValue] : 0.33f; + argsModel.y1 = customArgs[@"y1"] != nil ? [customArgs[@"y1"] floatValue] : 0.0f; + argsModel.x2 = customArgs[@"x2"] != nil ? [customArgs[@"x2"] floatValue] : 0.67f; + argsModel.y2 = customArgs[@"y2"] != nil ? [customArgs[@"y2"] floatValue] : 1.0f; + argsModel.x3 = customArgs[@"x3"] != nil ? [customArgs[@"x3"] floatValue] : 0.33f; + argsModel.y3 = customArgs[@"y3"] != nil ? [customArgs[@"y3"] floatValue] : 0.0f; + argsModel.x4 = customArgs[@"x4"] != nil ? [customArgs[@"x4"] floatValue] : 0.2f; + argsModel.y4 = customArgs[@"y4"] != nil ? [customArgs[@"y4"] floatValue] : 1.0f; + model.argsModel = argsModel; + } else if (curveType == GMCCurveTypeSpring) { + if (customArgs[@"m"] != nil || customArgs[@"s"] != nil || customArgs[@"d"] != nil || customArgs[@"iv"] != nil) { + GMCDefaultSpringArgsModel *argsModel = [[GMCDefaultSpringArgsModel alloc] init]; + argsModel.mass = customArgs[@"m"] != nil ? [customArgs[@"m"] floatValue] : 0.7f; + argsModel.stiffness = customArgs[@"s"] != nil ? [customArgs[@"s"] floatValue] : 380.0f; + argsModel.damping = customArgs[@"d"] != nil ? [customArgs[@"d"] floatValue] : 10.0f; + argsModel.velocity = customArgs[@"iv"] != nil ? [customArgs[@"iv"] floatValue] : -2.0f; + model.argsModel = argsModel; + } else { + GMCRK4SpringArgsModel *argsModel = [[GMCRK4SpringArgsModel alloc] init]; + argsModel.tension = customArgs[@"t"] != nil ? [customArgs[@"t"] floatValue] : 533.0f; + argsModel.friction = customArgs[@"f"] != nil ? [customArgs[@"f"] floatValue] : 14.0f; + argsModel.velocity = customArgs[@"v"] != nil ? [customArgs[@"v"] floatValue] : -2.0f; + model.argsModel = argsModel; + } + } + return model; +} + + +@end diff --git a/src/iOS/GaiaMotionCurve/GaiaMotionCurve.h b/src/iOS/GaiaMotionCurve/GaiaMotionCurve.h new file mode 100644 index 0000000..683481b --- /dev/null +++ b/src/iOS/GaiaMotionCurve/GaiaMotionCurve.h @@ -0,0 +1,32 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import + +//! Project version number for GaiaMotionCurve. +FOUNDATION_EXPORT double GaiaMotionCurveVersionNumber; + +//! Project version string for GaiaMotionCurve. +FOUNDATION_EXPORT const unsigned char GaiaMotionCurveVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + +#import +#import +#import +#import +#import +#import +#import \ No newline at end of file diff --git a/src/iOS/GaiaMotionCurve/NSValue+GMCCGFloat.h b/src/iOS/GaiaMotionCurve/NSValue+GMCCGFloat.h new file mode 100644 index 0000000..f0b2ce2 --- /dev/null +++ b/src/iOS/GaiaMotionCurve/NSValue+GMCCGFloat.h @@ -0,0 +1,29 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NSValue (GMCCGFloat) + +- (CGFloat)gmc_CGFloatValue; + ++ (NSValue *)gmc_valueWithCGFloat:(CGFloat)floatValue; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/iOS/GaiaMotionCurve/NSValue+GMCCGFloat.m b/src/iOS/GaiaMotionCurve/NSValue+GMCCGFloat.m new file mode 100644 index 0000000..9a74eea --- /dev/null +++ b/src/iOS/GaiaMotionCurve/NSValue+GMCCGFloat.m @@ -0,0 +1,33 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#import "NSValue+GMCCGFloat.h" + +@implementation NSValue (GMCCGFloat) + +- (CGFloat)gmc_CGFloatValue { + CGFloat floatValue; + [self getValue:&floatValue]; + return floatValue; +} + ++ (NSValue *)gmc_valueWithCGFloat:(CGFloat)floatValue { + NSValue *returnValue = [NSValue valueWithBytes:&floatValue + objCType:@encode(CGFloat)]; + return returnValue; +} + + +@end diff --git a/src/iOS/GaiaMotionCurve/NSValue+GMCUIColor.h b/src/iOS/GaiaMotionCurve/NSValue+GMCUIColor.h new file mode 100644 index 0000000..494c419 --- /dev/null +++ b/src/iOS/GaiaMotionCurve/NSValue+GMCUIColor.h @@ -0,0 +1,32 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#import +#import + +@class UIColor; + +NS_ASSUME_NONNULL_BEGIN + +@interface NSValue (GMCUIColor) + + +- (CGColorRef)gmc_CGColorValue; + ++ (NSValue *)gmc_valueWithCGColor:(CGColorRef)color; + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/iOS/GaiaMotionCurve/NSValue+GMCUIColor.m b/src/iOS/GaiaMotionCurve/NSValue+GMCUIColor.m new file mode 100644 index 0000000..c805249 --- /dev/null +++ b/src/iOS/GaiaMotionCurve/NSValue+GMCUIColor.m @@ -0,0 +1,30 @@ +// Copyright (c) 2022, Alibaba Group Holding Limited; +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#import "NSValue+GMCUIColor.h" + +@implementation NSValue (GMCUIColor) + ++ (NSValue *)gmc_valueWithCGColor:(CGColorRef)color { + return [NSValue valueWithBytes:&color objCType:@encode(CGColorRef)]; +} + +- (CGColorRef)gmc_CGColorValue { + CGColorRef color; + [self getValue:&color]; + return color; +} + +@end diff --git a/src/iOS/GaiaMotionCurveTests/GaiaMotionCurveTests.m b/src/iOS/GaiaMotionCurveTests/GaiaMotionCurveTests.m new file mode 100644 index 0000000..d3ec7ca --- /dev/null +++ b/src/iOS/GaiaMotionCurveTests/GaiaMotionCurveTests.m @@ -0,0 +1,36 @@ +// +// GaiaMotionCurveTests.m +// GaiaMotionCurveTests +// +// Created by 周荣慧 on 2022/1/4. +// + +#import + +@interface GaiaMotionCurveTests : XCTestCase + +@end + +@implementation GaiaMotionCurveTests + +- (void)setUp { + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. +} + +- (void)testExample { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. +} + +- (void)testPerformanceExample { + // This is an example of a performance test case. + [self measureBlock:^{ + // Put the code you want to measure the time of here. + }]; +} + +@end diff --git a/src/iOS/Podfile b/src/iOS/Podfile new file mode 100644 index 0000000..b649ae2 --- /dev/null +++ b/src/iOS/Podfile @@ -0,0 +1,7 @@ + +target 'GaiaMotionCurve' do + platform :ios, '9.0' + # Uncomment the next line if you're using Swift or would like to use dynamic frameworks + # use_frameworks! + +end