Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/draveness/DKChainableAnimationKit
A DSL to make animation easy on iOS with Swift.
https://github.com/draveness/DKChainableAnimationKit
animation animation-chain animation-effects chainable-animations swift
Last synced: 3 months ago
JSON representation
A DSL to make animation easy on iOS with Swift.
- Host: GitHub
- URL: https://github.com/draveness/DKChainableAnimationKit
- Owner: draveness
- License: mit
- Archived: true
- Created: 2015-05-14T03:37:22.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2019-09-12T10:12:14.000Z (about 5 years ago)
- Last Synced: 2024-07-16T04:04:55.348Z (4 months ago)
- Topics: animation, animation-chain, animation-effects, chainable-animations, swift
- Language: Swift
- Homepage:
- Size: 2.53 MB
- Stars: 1,894
- Watchers: 42
- Forks: 110
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![](./Gifs/DKChainableAnimationKit.jpg)
This project is highly inspired by JHChainableAnimations, **If you project is developed with Objective-C, use [JHChainableAnimations](https://github.com/jhurray/JHChainableAnimations) instead.**
## With DKChainableAnimationKit
Using DKChainableAnimationKit, you do not need to write the **extra parentheses**.
```
view.animation.makeScale(2.0).spring.animate(1.0)
```# Installation with CocoaPods
[CocoaPods](https://cocoapods.org/) 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](https://cocoapods.org/#get_started) for more details.
## Podfile
```
use_frameworks!pod "DKChainableAnimationKit", "~> 2.0.0"
```# Installation with Carthage
[Carthage](https://github.com/Carthage/Carthage) is a depency manager for Objectiv-C and Swift.
## Cartfile
```
github "Draveness/DKChainableAnimationKit"
```# Usage
Import DKChainableAnimationKit in proper place.
```
import DKChainableAnimationKit
```DKChainableAnimationKit is designed to be extremely easy to use. First call `animation` method on `UIView` instance, and then add the animation you want followed by a `animate(t)` method.
```
view.animation.moveX(100.0).animate(1.0)
```## Animating
Chainable properties or functions like **`moveX(x)`** must come between the **`animate(duration)`** function.
```
view.animation.moveX(100.0).animate(1.0)
```If you want mutiple animation at one time.
```
view.animation.moveX(100.0).moveY(100.0).animate(1.0)
```This will move the view 100 point right and 100 point down at the same time. Order is not important.
## Chaining Animations
To chain animations separate the chains with the **thenAfter(duration)** function.
```
view.animation.moveX(100.0).thenAfter(1.0).makeScale(2.0).animate(2.0)
```This will move the view for one second and after moving, it will scale for two seconds.
## Animation Effects
To add animation effect, call the effect method after the chainable property you want it to apply it.
Below is an example of moving a view with a spring effect.
```
view.animation.moveX(10).spring.animate(1.0)
```If you add two animation effect, the first will be cancel out.
```
view.animation.moveX(10).spring.bounce.animate(1.0)
// The same as view.animation.moveX(10).bounce.animate(1.0)
```## Anchoring
To anchor your view call an anchoring method at some point in an animation chain. And if you add two anchoring property, the first will be cancel like effects.
```
view.animation.rotate(180).anchorTopLeft.thenAfter(1.0).rotate(90).anchorCenter.animanimation
```## Delay
To delay an animation call the **`wait(time)`** or **`delay(time)`** chainable function.
```
view.animation.moveXY(100, 40).wait(0.5).animate(1.0)
view.animation.moveXY(100, 40).delay(0.5).animate(1.0)
delay
```This will move the view after 0.5 second delay.
## Completion
If you want to run code after an animation finishes, you are supposed to set the **`animationCompletion`** property or call **`animateWithCompletion(t, completion)`** function.
```
view.animation.makeX(0).animateWithCompletion(1.0, {
println("Animation Done")
})
```This is the same as
```
view.animation.animationCompletion = {
println("Animation Done")
}
view.animation.makeX(0).animate(1.0)
```And also the same as
```
view.animation.makeX(0).animate(1.0).animationCompletion = {
println("Animation Done")
}
```## Bezier Paths
You can also animate a view along a UIBezierPath. Call `bezierPathForAnimation` method first and then add points or curves to it and us it in a chainable property.
```
let path = view.animation.bezierPathForAnimation()
path.addLintToPoint(CGPoint(x: 30, y: 40))
view.animation.moveOnPath(path).animate(1.0)
```Animation effects does not work on path movement.
----
# Chainable Properties
moveX(100.0)
moveY(100.0)
moveWidth(100.0)
moveHeight(100.0)
moveXY(100.0, 100.0)
makeX(100.0)
makeY(100.0)
makeOrigin(100.0, 100.0)
makeCenter(100.0, 100.0)
makeWidth(100.0)
makeHeight(100.0)
makeSize(100.0, 100.0)
makeFrame(rect) // let rect: CGRect
makeBounds(rect) // let rect: CGRect
makeScale(2.0)
makeScaleX(2.0)
makeScaleY(2.0)
makeOpacity(0.0)
makeBackground(purple) // let purple: UIColor
makeBorderColor(red) // let red: UIColor
makeBorderWidth(10.0)
makeCornerRadius(25.0)
# To Do
* Support OS X
* Support Swift 2.0----
# Contact
* If you have some advice open an issue or a PR.
* Email [Draveness](mailto: [email protected])# License
DKChainableAnimationKit is available under the MIT license. See the LICENSE file for more info.