DaisyChain is a micro framework which makes UIView animations chaining dead simple. It uses the exact same interface you are familiars with.
We all have seen or written code which looks like this:
UIView.animateWithDuration(0.5, animations: {
view.center = CGPointMake(0.0, 0.0)
}) { _ in
UIView.animateWithDuration(0.5, animations: {
view.center = CGPointMake(100.0, 0.0)
}) { _ in
UIView.animateWithDuration(0.5, animations: {
view.center = CGPointMake(100.0, 100.0)
}) { _ in
UIView.animateWithDuration(0.5, animations: {
view.center = CGPointMake(0.0, 100.0)
}) { _ in
UIView.animateWithDuration(0.5, animations: {
view.center = CGPointMake(0.0, 0.0)
})
}
}
}
}
This can go pretty far, it is also know as the callback hell. It's not very flexible and hard to read.
With DaisyChain the above code looks like this:
let chain = DaisyChain()
chain.animateWithDuration(0.5, animations: {
view.center = CGPointMake(0.0, 0.0)
})
chain.animateWithDuration(0.5, animations: {
view.center = CGPointMake(100.0, 0.0)
})
chain.animateWithDuration(0.5, animations: {
view.center = CGPointMake(100.0, 100.0)
})
chain.animateWithDuration(0.5, animations: {
view.center = CGPointMake(0.0, 100.0)
})
chain.animateWithDuration(0.5, animations: {
view.center = CGPointMake(0.0, 0.0)
})
As you can the the code looks more flat, it allows you to easy modify orders or add new steps.
DaisyChain also adds a simple way to break animation sequences, simply set the broken
property to yes
to break a chain:
chain.broken = true
To continue chaining animation, you'll need to put it back to false
or create a new chain.
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'DaisyChain', '~> 1.0.0'
github "alikaragoz/DaisyChain" ~> 1.0.0
DaisyChain is available under the MIT license.