TheAnimation

by marty-suzuki

marty-suzuki / TheAnimation

Type-safe CAAnimation wrapper. It makes preventing to set wrong type values.

205 Stars 10 Forks Last release: 9 months ago (0.4.0) MIT License 25 Commits 5 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

TheAnimation

Platform Language Carthage Version License CI Status

TheAnimation is Type-safe CAAnimation wrapper.

Introduction

For example, if you want to animate

backgroundColor
with
CABasicAnimation
, you need to consider type because fromValue property and so on are
Any?
.

If you use

BasicAnimation of TheAnimation
, you can animate
backgroundColor
without considering type! (
AnimationKeyPaths.backgroundColor
is
AnimationKeyPath
type.)

Usage

The way of making an animation is almost similar

CAAnimation
. But you need to use
animation.animate(in:)
method instead of using
layer.add(_:forKey:)
.
let view = UIView()

let animation = BasicAnimation(keyPath: .opacity) animation.fromValue = 0 animation.toValue = 1 animation.duration = 1 animation.animate(in: view)

animation.animate(in:)
returns
AnimaitonCanceller
. You can cancel an animation with it.
let canceller = animation.animate(in: view)
canceller.cancelAnimation()

Example

To run the example project, clone the repo, and open Example directory.

Correspondence Table

| CAAnimation | TheAnimation | | :-: | :-: | | CAPropertyAnimation | PropertyAnimation | | CABasicAnimation | BasicAnimation | | CAKeyframeAnimation | KeyframeAnimation | | CASpringAnimation | SpringAnimation | | CATransition | TransitionAnimation | | CAAnimationGroup | AnimationGroup |

Add new
AnimationKeyPath

You can add

AnimationKeyPath
like this.
extension AnimationKeyPaths {
    static let newKeyPath = AnimationKeyPath(keyPath: "abcd")
}

Handle animation did
Start
/
Stop

You can handle animation did Start with

func setAnimationDidStart(handler:)
. In addition, you can handle animation did Stop with
func setAnimationDidStop(handler:)
.
let view = UIView()

let animation = BasicAnimation(keyPath: .opacity) animation.fromValue = 0 animation.toValue = 1 animation.duration = 1

animation.setAnimationDidStart { // do something }

animation.setAnimationDidStop { finished in // do something }

animation.animate(in: view)

Requirements

  • Xcode 9.3
  • iOS 9 or greater
  • tvOS 9 or greater
  • macOS 10.11 or greater
  • Swift 4.2 (since 0.3.0)

Installation

Carthage

If you’re using Carthage, simply add TheAnimation to your

Cartfile
:
github "marty-suzuki/TheAnimation"

CocoaPods

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

pod 'TheAnimation'

Author

marty-suzuki, [email protected]

License

TheAnimation is available under the MIT license. See the LICENSE file for more info.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.