Cheetah

Cheetah is an animation utility on iOS with Swift. Cheetah can animate any properties since Cheetah uses simple CADisplayLink run loop to change animated properties.

Requirements

  • iOS 8.0~
  • tvOS 9.0~
  • Swift 3.0

Features

  • Animation with duration and delay
  • Changing with absolute/relative properties
  • Parallel/Serial executions
  • Easings
  • Springs

Carthage

Carthage is a simple, decentralized dependency manager for Cocoa.

To install Cheetah, simply add the following line to your Cartfile:

github "suguru/Cheetah"

Code Example

// Create view
let box = UIView(frame:CGRectMake(100,100,50,50))
box.backgroundColor = UIColor.blueColor()
view.addSubview(box)

// Move to 100px right
box.cheetah.move(100, 0).run()

Simple move

Properties

Cheetah has several methods to animate properties easily. You can also animate your own properties with extending CheetahProperty.

  • move
  • position (absolute of move)
  • scale
  • rotate
  • rotation (absolute of rotate)
  • size
  • frame
  • alpha
  • backgroundColor
  • textColor
  • borderColor
  • borderWidth
  • borderRadius
  • custom properties

Parallel execution

Cheetah groups animation properties and execute them at once.

view.cheetah
  .move(100, 0)
  .rotate(M_PI * 2)
  .scale(1.5)
  .run()

Parallel

Serial execution

wait will wait until all animations placed before it completed.
It can also receive seconds to wait to start next animation.

view.cheetah
  .move(100, 0).rotate(M_PI)
  .wait()
  .move(-100, 0).rotate(-M_PI)
  .wait(1.0) // <- wait 1 sec to start next animation
  .move(0, -20).duration(0.4)
  .wait()
  .move(0, 20).duration(0.4)
  .run()

Serial

Duration and delay

Cheetah has duration and delay to each animation properties.

view.cheetah
  .move(100, 0).duration(1.0).delay(1.0)
  .rotate(M_PI).duration(2.0)
  .wait(1)
  .move(-100, 0).duration(0.4)
  .run()

Delay

Duration will be copied from the property placed before.

view.cheetah
  .duration(0.5)
  .move(100, 0) // <- will have 0.5 sec duration
  .rotate(M_PI) // <- will have 0.5 sec duration
  .run()

Repeating

To repeat animations, use repeatCount(count: Int)

view.cheetah.rotate(M_PI_2).run().repeat(3)

To repeat forever, use forever

view.cheetah.rotate(M_PI_2).run().forever

Repeat

Easings

Cheetah supports various easing functions. You can also add custom easings with quad bezier points.

Easings

Exmaple

view.cheetah.move(150, 150).easeInQuad.run()

Supported eassing equations

  • Linear
  • Sine
  • Quad
  • Quart
  • Quint
  • Circ
  • Cubic
  • Expo
  • Back
  • Bounce
  • Elastic

Springs

Cheetah supports spring dynamics with tension and friction parameters.

Springs

Example

view.cheetah
  .move(200, 0)
  .spring()
  .run()

view.cheetah
  .move(200, 0)
  .spring(tension: 100, friction: 4)
  .run()

Animate custom properties

You can extend CheetahProperty to animate custom properties. You can refer CheetahViewProperties.swift and CheetahLayerProperties.swift.

:)

GitHub

https://github.com/suguru/Cheetah