Latest 2.0.0
License MIT
Platforms ios 9.0


Ease is a event driven animation system that combines the observer pattern with custom spring animations as observers.

SceneKit Example👆


UIGestureRecognizer, UIScrollView and Gyroscope based Examples👆


  • [X] Swift 4
  • [X] supports iOS 9 and up
  • [X] supported value types are: CGFloat, CGPoint, CGSize, CGVector, Int, Float, Double, SCNVector3


Create your Ease object with an initial value

var ease: Ease<CGPoint> = Ease(, minimumStep: 0.001)

Add your custom spring-animation(s)

ease.addSpring(tension: 300, damping: 15, mass: 1) { position in = 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


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.

Latest podspec

    "name": "Ease",
    "version": "2.0.0",
    "platforms": {
        "ios": "9.0"
    "summary": "Animate everything with Ease",
    "description": "Ease is a event driven animation system.",
    "homepage": "",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    "authors": {
        "Robert-Hein Hooijmans": "[email protected]"
    "social_media_url": "",
    "source": {
        "git": "",
        "tag": "2.0.0"
    "source_files": "Ease/Classes/**/*.{swift}"

Pin It on Pinterest

Share This