GitHub - roberthein/Ease: Animate everything with Ease
source link: https://github.com/roberthein/Ease
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Ease is an event driven animation system that combines the observer pattern with custom spring animations as observers. It's magic.
Features
- Animate any value type
- Set multiple animations for a single value
- Animation trajectories update when you update the
targetValue
- Add natural spring behavior to any value change
- Optimized for Swift 5
- Compatible with iOS 9 and up
Supported value types
- CGFloat
- CGPoint
- CGSize
- CGVector
- Float
- Double
- SCNVector3
Easily extendible with more (custom) types.
Examples
Create your Ease object with an initial value
var ease: Ease<CGPoint> = Ease(view.center, minimumStep: 0.001)
Add your custom spring-animation(s)
ease.addSpring(tension: 300, damping: 15, mass: 1) { position in view.center = position }
Set the target value of your Ease object and adjust your target as often as you want
ease.targetValue = gestureRecognizer.location(in: view)
Memory management
For a single spring-animation you can store the returned EaseDisposable
to a variable
disposable = ease.addSpring(tension...
For multiple spring-animations you can add the disposable to a EaseDisposal
variable
ease.addSpring(tension...) { }.add(to: &disposal)
And always weakify self
when referencing self
inside your spring-animation
ease.addSpring(tension...) { [weak self] position in
Installation
Ease is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'Ease'
Suggestions or feedback?
Feel free to create a pull request, open an issue or find me on Twitter.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK