Ease 是一个事件驱动的动画系统,它将观察者模式与自定义弹簧动画作为观察者相结合。它很神奇。
功能
- 动画任何值类型
- 为一个值设置多个动画
- 当更新
targetValue
时,动画轨迹会更新 - 为任何值变化添加自然的弹簧行为
- 优化供Swift 5使用
- 与iOS 9及更高版本兼容
支持的价值类型
- CGFloat
- CGPoint
- CGSize
- CGVector
- Int
- Float
- Double
- SCNVector3
易于扩展以支持更多(自定义)类型。
示例
如何实现
使用初始值创建你的 Ease 对象
var ease: Ease<CGPoint> = Ease(view.center, minimumStep: 0.001)
添加你的自定义弹簧动画
ease.addSpring(tension: 300, damping: 15, mass: 1) { position in
view.center = position
}
设置Ease对象的target值,并根据需要调整目标值
ease.targetValue = gestureRecognizer.location(in: view)
内存管理
对于单个弹簧动画,您可以将其返回的 EaseDisposable
存储到变量中
disposable = ease.addSpring(tension...
对于多个弹簧动画,您可以将 disposable 添加到 EaseDisposal
变量中
ease.addSpring(tension...) { }.add(to: &disposal)
在您的弹簧动画内部引用 self
时,始终要弱化 self
ease.addSpring(tension...) { [weak self] position in
安装
Ease via CocoaPods 可用。要安装它,只需将以下行添加到您的 Podfile 中
pod 'Ease'
建议或反馈?
请随意创建一个 pull request,打开一个问题或在 Twitter 上找到我。