测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可协议 | Apache 2 |
发布日期最后发布日期 | 2017年2月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Jeff Verkoeyen 维护。
此库为 Core Animation 和 Material Motion 运行时之间提供了一个桥梁。
Tween
使用 Core Animation 的 CAKeyframeAnimation 沿缓动曲线动画 CALayer 属性。
使用 Tween 的方式就像使用 CAKeyframeAnimation 实例一样:提供一个关键路径、持续时间以及一个值数组。
let tweenBackgroundColor = Tween("backgroundColor",
duration: animDuration,
values: [UIColor.orange.cgColor, UIColor.lightGray.cgColor])
scheduler.addPlan(tweenBackgroundColor, to: myView)
Tween 的属性映射到以下 Core Animation 属性
Tween | Core Animation |
---|---|
延迟 | 延迟 |
持续时间 | 持续时间 |
关键路径 | 关键路径 |
关键位置 | 关键时间 |
时序函数 | 时序函数 |
值 | 值 |
目前不支持其他 Core Animation 属性。查看我们提交的[功能请求][https://github.com/material-motion/coreanimation-swift/labels/Feature%20request]以跟踪支持其他功能进展。
导入框架
@import MaterialMotionCoreAnimation;
现在你将访问所有 API。
通过运行以下命令可以访问 repo 中的本地副本,以访问 Catalog 应用程序:
git clone https://github.com/material-motion/coreanimation-swift.git
cd coreanimation-swift
pod install
open MaterialMotionCoreAnimation.xcworkspace
代码片段
Objective-C 中的示例
MDMTween *tween = [[MDMTween alloc] initWithKeyPath:@"<#key path#>"
duration:<#duration#>
values:@[<#values...#>]];
[scheduler addPlan:tween to:<#Object#>];
Swift 中的示例
let tween = Tween(<#key path#>, duration: <#duration#>, values: [<#values...#>])
scheduler.addPlan(tween, to: <#Object#>)
传入一个单一值给Tween,它将把这个值作为CABasicAnimation的toValue
。根据Core Animation文档
在图层属性当前值和`toValue`之间进行插值。
代码片段
Objective-C 中的示例
MDMTween *tween = [[MDMTween alloc] initWithKeyPath:@"<#key path#>"
duration:<#duration#>
values:@[<#value#>]];
[scheduler addPlan:tween to:<#Object#>];
Swift 中的示例
let tween = Tween(<#key path#>, duration: <#duration#>, values: [<#value#>])
scheduler.addPlan(tween, to: <#Object#>)
我们提供了两个辅助API来提交Tween计划的to/from值到特定的CALayer实例。这通常用于提交Tween的to
值到图层,以确保属性在动画完成后看起来不会“突然弹回”。
代码片段
Objective-C 中的示例
[tween commitFirstValueTo:<#CALayer#>];
[tween commitLastValueTo:<#CALayer#>];
Swift 中的示例
tween.commitFirstValue(to: <#CALayer#>)
tween.commitLastValue(to: <#CALayer#>)
我们欢迎贡献!
查看我们的即将到来的里程碑。
根据Apache 2.0许可证授权。请参阅LICENSE文件以获取详细信息。