Aketch  Rachel

Aketch Rachel


5 Popular Swift animation Libraries

In this Swift article, let's learn about Animation: 5 popular Swift Animation Libraries

Table of contents:

  • Advance - A powerful animation framework for iOS, tvOS, and OS X.
  • ChainPageCollectionView - Fancy two-level collection view layout and animation.
  • Comets - Animating Particles.
  • DKChainableAnimationKit - Easy to read and write chainable animations.
  • Ease - Animate everything with Ease.
  • EasyAnimation - A library to take the power of UIView.animateWithDuration(_:, animations:...) to a whole new level.


What Is animation in Swift?

Animations can add visual cues that notify users about what's going on in the app. In iOS, animations are used extensively to reposition views, change their size, remove them from view hierarchies, and hide them.

5 Popular Swift animation Libraries

  1. Advance

An animation library for iOS, tvOS, and macOS that uses physics-based animations (including springs) to power interactions that move and respond realistically.

let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))

// Springs animate changes to a value
let spring = Spring(initialValue: view.center)

// The `onChange` closure will be called every time the spring updates
spring.onChange = { [view] newCenter in
    view.center = newCenter

/// The view's center will realistically animate to the new target value.
spring.target = CGPoint(x: 300, y: 200)


There are several ways to integrate Advance into your project.

Manually: add Advance.xcodeproj to your project, then add Advance-{iOS|macOS|tvOS}.framework as an "Embedded Binary" to your application target (under General in target settings). From there, add import Advance to your code and you're good to go.

Carthage: add github "timdonnelly/Advance" to your Cartfile.

CocoaPods: add pod 'Advance' to your Podfile.

Swift Package Manager: add a dependency to your Project.swift: .package(url: "http://github.com/timdonnelly/Advance", from: "3.0.0")


  • iOS 10+, tvOS 10+, or macOS 10.12+
  • Swift 5.0 (Xcode 10.2 or higher)


API documentation is available here.

Advance animations are applied on every frame (using CADisplayLink on iOS/tvOS, and CVDisplayLink on macOS), allowing for fine-grained control at any time.

View on GitHub

2.  ChainPageCollectionView

A custom View with two level chained collection views and fancy transition animation.


Demo Demo


  • iOS 9.0+
  • Xcode 8



Update your Podfile to include the following:

pod 'ChainPageCollectionView', '~> 1.0'

Run pod install.

NOTE: If you can not find the pod target. Please follow: https://stackoverflow.com/questions/31065447/no-such-module-when-i-use-cocoapods to build your pod target.


To integrate ChainPageCollectionView with Carthage, specify it in your Cartfile

github "jindulys/ChainPageCollectionView" ~> 1.0

Then, run the following command to build ChainPageCollectionView framework

$ carthage update

At last, you need to set up your Xcode project manually to add ChainPageCollectionView framework.

On your application targets’ General settings tab, in the Linked Frameworks and Libraries section, drag and drop each framework you want to use from the Carthage/Build folder on disk.

View on GitHub

3.  Comets

☄️ Comets: Animating Particles in Swift

animation made by kevin as part of Voicy design

implements Bennet van der Linden medium Comets: Animating Particles in Swift


// Customize your comet
let width = view.bounds.width
let height = view.bounds.height
let comets = [Comet(startPoint: CGPoint(x: 100, y: 0),
                    endPoint: CGPoint(x: 0, y: 100),
                    lineColor: UIColor.white.withAlphaComponent(0.2),
                    cometColor: UIColor.white),
              Comet(startPoint: CGPoint(x: 0.4 * width, y: 0),
                    endPoint: CGPoint(x: width, y: 0.8 * width),
                    lineColor: UIColor.white.withAlphaComponent(0.2),
                    cometColor: UIColor.white),
              Comet(startPoint: CGPoint(x: 0.8 * width, y: 0),
                    endPoint: CGPoint(x: width, y: 0.2 * width),
                    lineColor: UIColor.white.withAlphaComponent(0.2),
                    cometColor: UIColor.white),
              Comet(startPoint: CGPoint(x: width, y: 0.2 * height),
                    endPoint: CGPoint(x: 0, y: 0.25 * height),
                    lineColor: UIColor.white.withAlphaComponent(0.2),
                    cometColor: UIColor.white),
              Comet(startPoint: CGPoint(x: 0, y: height - 0.8 * width),
                    endPoint: CGPoint(x: 0.6 * width, y: height),
                    lineColor: UIColor.white.withAlphaComponent(0.2),
                    cometColor: UIColor.white),
              Comet(startPoint: CGPoint(x: width - 100, y: height),
                    endPoint: CGPoint(x: width, y: height - 100),
                    lineColor: UIColor.white.withAlphaComponent(0.2),
                    cometColor: UIColor.white),
              Comet(startPoint: CGPoint(x: 0, y: 0.8 * height),
                    endPoint: CGPoint(x: width, y: 0.75 * height),
                    lineColor: UIColor.white.withAlphaComponent(0.2),
                    cometColor: UIColor.white)]

// draw line track and animate
for comet in comets {



Comets is written in Xcode 10, Swift 5.0, iOS 9.0 Required

View on GitHub

4.  DKChainableAnimationKit

A DSL to make animation easy on iOS with Swift.

With DKChainableAnimationKit

Using DKChainableAnimationKit, you do not need to write the extra parentheses.


Installation with CocoaPods

CocoaPods is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries like DKNightVersion in your projects. See the Get Started section for more details.



pod "DKChainableAnimationKit", "~> 2.0.0"

Installation with Carthage

Carthage is a depency manager for Objectiv-C and Swift.


github "Draveness/DKChainableAnimationKit"

View on GitHub

5.  Ease

Ease is an event driven animation system that combines the observer pattern with custom spring animations as observers. It's magic.


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


Ease is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'Ease'

View on GitHub

6.  EasyAnimation

A Swift library to take the power of UIView.animateWithDuration(_:, animations:...) to a whole new level - layers, springs, chain-able animations and mixing view and layer animations together!

UIView.animateWithDuration:animations: is really easy to use and you're so familiar with its syntax that you often want it to do just a bit more for you automatically. But it doesn't and you need to import Bloated.framework by Beginner Ninja Coder in order to make a bit more advanced animations than what animateWithDuration:animations: allows you to.

EasyAnimation extends what UIKit offers in terms of animations and makes your life much easier because you can do much more without learning some perky new syntax.

In version 2.0 and higher to enable all EasyAnimation features you need to run once this code - AppDelegate is a good place since it'll enable EasyAnimation as soon as your app starts.


In your other classes you don't need to import EasyAnimation or do anything else. Once you call enable() afterwards you use the normal UIKit APIs like usual.

Easy Layer Animations

EasyAnimation allows you to animate your layers straight from animate(duration:animations:...). No more CABasicAnimation code for you. Just adjust the properties of your layers from within the animations block and EasyAnimation will take care of the rest:


CoreAnimation (before)
    let anim = CABasicAnimation(keyPath: "position.x")
    anim.fromValue = 100.0
    anim.toValue = 200.0
    anim.duration = 2.0
    view.layer.addAnimation(anim, forKey: nil)
EasyAnimation (after)
    UIView.animate(duration: 2.0, animations: {
        self.view.layer.position.x = 200.0


(OK, this example actually works fine also without EasyAnimation but I still keep it here for illustrative purpose)

View on GitHub

Animation of Swift FAQ

  • How do I view an animation in Swift?

To be exact, whenever you want to animate the view, you actually call layoutIfNeeded on the superview of that view. Try this instead: UIView. animate(withDuration: 0.1, delay: 0.1, options: UIViewAnimationOptions.

  • What is Core Animation in iOS Swift?

Overview. Core Animation provides high frame rates and smooth animations without burdening the CPU and slowing down your app. Most of the work required to draw each frame of an animation is done for you.

  • Does SwiftUI use Core Animation?

SwiftUI uses Core Animation for rendering by default, and its performance is great for most animations. But if you find yourself creating a very complex animation that seems to suffer from lower framerates, you may want to utilize the power of Metal, which is Apple's framework used for working directly with the GPU.

Related videos:

Swift for Beginners: Basic Animation - Swift 5, Xcode 11

Related posts:


What is GEEK

Buddha Community

5 Popular Swift animation Libraries
Houston  Sipes

Houston Sipes


10 Free Online Resources To Learn Swift Language

Swift is a fast and efficient general-purpose programming language that provides real-time feedback and can be seamlessly incorporated into existing Objective-C code. This is why developers are able to write safer, more reliable code while saving time. It aims to be the best language that can be used for various purposes ranging from systems programming to mobile as well as desktop apps and scaling up to cloud services.

Below here, we list down the 10 best online resources to learn Swift language.

(The list is in no particular order)

#developers corner #free online resources to learn swift language #learn swift #learn swift free #learn swift online free #resources to learn swift #swift language #swift programming

Top Swift Development Companies | Top Swift Developers - TopDevelopers.co

A thoroughly researched list of top Swift developers with ratings & reviews to help find the best Swift development companies around the world.

#swift development service providers #best swift development companies #top swift development companies #swift development solutions #top swift developers #swift

Hire Dedicated Swift Developers

Want to create a native iOS application for your Startup?

Hire Dedicated Swift Developers for end-to-end services like development, migration, upgrade, testing, and support & maintenance. Trust HourlyDeveloper.io our Swift development team for iOS device apps that are high on performance and security.

Consult with experts:- https://bit.ly/2C5M6cz

#hire dedicated swift developers #swift developers #swift development company #swift development services #swift development #swift

Jamel  O'Reilly

Jamel O'Reilly


Elegant Library to Manage The interactions Between View In Swift

An assistant to manage the interactions between view and model

ModelAssistant is a mediator between the view and model. This framework is tailored to work in conjunction with views that present collections of objects. These views typically expect their data source to present results as a list of sections made up of rows. ModelAssistant can efficiently analyze model objects and categorize them in sections. In addition it updates adopted view to its delegate, based on model objects changes.


  •  Inserting / Removing / Ordering / Updating model objects
  •  Notifies changes to view
  •  Full compatible with UITableView and UICollectionView
  •  Supports Sections
  •  Supports index titles
  •  Compatible with Server data source
  •  Compatible with all kind of persistent stores
  •  Compatible with all design patterns
  •  Easy to use
  •  Thread safe
  •  Fault Ability
  •  Complete Documentation

What's New:

Version 1.1.3:

Now using modelAssitant is really easy with just two lines of codes, and delegates will be implement automatically to your collection view.

See Usage for new way of implementing modelAssistant.


Upgraded to Swift 5

Version 1.0.8:

  • Fault Ability: Now you can make entities in an specific range fault or fire them. For more information see Advanced Usage


  • iOS 8.0+
  • Xcode 8.3+
  • Swift 3.1+



CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

To integrate ModelAssistant into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'

target '<Your Target Name>' do

    pod 'ModelAssistant'

If you are not upgraded to Swift 4.2, use the last non-swift 4.2 compatible release:

If you are using swift 4, replace pod 'ModelAssistant' with this:

pod 'ModelAssistant', '1.0.1' #Swift 4

If you are using swift 3, replace pod 'ModelAssistant' with this:

pod 'ModelAssistant', '1.0.0' #Swift 3


Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate ModelAssistant into your Xcode project using Carthage, specify it in your Cartfile:

github "ssamadgh/ModelAssistant"

Run carthage update --platform iOS to build the framework and drag the built ModelAssistant.framework into your Xcode project.


If you prefer not to use any of the aforementioned dependency managers, you can integrate ModelAssistant into your project manually.

Embedded Framework

Open up Terminal, cd into your top-level project directory, and run the following command "if" your project is not initialized as a git repository:

$ git init

Add ModelAssistant as a git submodule by running the following command:

$ git submodule add https://github.com/ssamadgh/ModelAssistant.git

Open the new ModelAssistant folder, and drag the ModelAssistant.xcodeproj into the Project Navigator of your application's Xcode project.

It should appear nested underneath your application's blue project icon. Whether it is above or below all the other Xcode groups does not matter.

Select the ModelAssistant.xcodeproj in the Project Navigator and verify the deployment target matches that of your application target.

Next, select your application project in the Project Navigator (blue project icon) to navigate to the target configuration window and select the application target under the "Targets" heading in the sidebar.

In the tab bar at the top of that window, open the "General" panel.

Click on the + button under the "Embedded Binaries" section.

You will see two different ModelAssistant.xcodeproj folders each with a ModelAssistant.framework nested inside a Products folder.

It does not matter which Products folder you choose from.

Select the ModelAssistant.framework.

And that's it!

The ModelAssistant.framework is automagically added as a target dependency, linked framework and embedded framework in a copy files build phase which is all you need to build on the simulator and a device.


What is the position of ModelAssistant in design patterns?

ModelAssistant is fully compatible with all kind of design patterns. It doesn't violate them, instead it finds its place and sit there! As a guide the position of ModelAssistant in some of famous design patterns is as follows:

Design PatternModelAssistant Position


ModelAssistant is owned and maintained by the Seyed Samad Gholamzadeh. You can follow me on Twitter at @ssamadgh for project updates and releases.


ModelAssistant is released under the MIT license. See LICENSE for details.

Author: ssamadgh
Source Code: https://github.com/ssamadgh/ModelAssistant
License: MIT license

#ios #swift 

Best Swift App Development Company

Hire an Exceptional Swift App Developer from Mobile App Development India. Maadi has a dedicated Swift App Development team that is superiorly talented and builds highly functional, cost-effective mobile apps with error-free coding.

Contact: https://www.mobile-app-development-india.com/swift-app-development/

#swift ios app development india #hire swift programmer india #swift ios development #apple swift app development #swift mobile app development #swift app development