Anim allows you to use animations very easily. You can use it in your UIKit application for make smooth animations, using Swift.
- Position (CGPoint)
- Bounce effect
- Resize (CGSize)
- Rotation
- Rotation X
- Rotation Y
- Rotation Z
- Fade
- Border raduis
- Move circle
- Animations sequence
- Repeat animations
- Block completion
You can use Anim with all Layers (UIButton, UItableViewCell, UItextField, UIView, ...). Anim provides a extension for CALayer, for use animation:
let animation = Animation.movePosition(CGPointMake(30, 30), delay: 1.5)
self.myView.layer.runAnimation(animation)
You can use the block completion for link animation
let resizeAnimation = Animation.resize(CGSizeMake(30, 30), delay: 1.5)
let bounceAnimation = Animation.bounce(30, delay: 0.1)
self.myView.layer.runAnimation(resizeAnimation, blockCompletion: { () -> () in
self.myView.layer.runAnimation(bounceAnimation)
})
You can also use sequence of animations. All animations in a sequence will be executed one after the other.
let sequenceAnimation = Animation.sequenceAnimations([Animation.resize(CGSizeMake(30, 30), delay: 1.5),
Animation.bounce(30, delay: 0.1)])
self.myView.layer.runAnimation(sequenceAnimation)
Now there is the repeat animation method. For infinite or count animation.
let move = Animation.sequenceAnimations([Animation.movePosition(CGPointMake(10, 10), delay: 1.5),
Animation.movePosition(CGPointMake(30, 30), delay: 1.5)])
let bounce = Animation.bounce(30, delay: 0.1)
let repeatBouceForEver = Animation.repeatAnimations(Repeat.Infinity, animationParam: bounce)
let repeatMove = Animation.repeatAnimations(Repeat.Count(10), animationParam: move)
self.myView.layer.runAnimation(repeatBouceForEver)
self.myView.layer.runAnimation(repeatMove)
For remove all current animation:
self.myView.layer.removeAllAnimations()
Here are some example of use:
let animationStart = Animation.sequenceAnimations([Animation.resizeFrame(CGSizeMake(300, 300), delay: 2), Animation.rotationX(-0.85, delay: 2)])
o.layer.runAnimation(animationStart, blockCompletion: { () -> () in
self.l.layer.runAnimation(Animation.movePosition(CGPointMake(100, 100), delay: 2))
self.l.layer.runAnimation(Animation.resizeFrame(CGSizeMake(100, 100), delay: 2), blockCompletion: { () -> () in
self.l2.layer.runAnimation(Animation.movePosition(CGPointMake(110, 110), delay: 2))
self.l2.layer.runAnimation(Animation.resizeFrame(CGSizeMake(80, 80), delay: 2), blockCompletion: { () -> () in
self.l3.layer.runAnimation(Animation.movePosition(CGPointMake(120, 120), delay: 2))
self.l3.layer.runAnimation(Animation.resizeFrame(CGSizeMake(60, 60), delay: 2), blockCompletion: { () -> () in
o.layer.runAnimation(Animation.rotationX(0.85, delay: 2), blockCompletion: { () -> () in
})
})
})
})
})
let a = Animation.repeatAnimations(Repeat.Count(3), animationParam: Animation.moveCircle(CGRectMake(0, 100, 200, 200), delay: 1))
let a2 = Animation.repeatAnimations(Repeat.Count(3), animationParam: Animation.moveCircle(CGRectMake(0, 100, 200, 200), delay: 1.5))
let a3 = Animation.repeatAnimations(Repeat.Count(3), animationParam: Animation.moveCircle(CGRectMake(0, 100, 200, 200), delay: 2))
l.layer.runAnimation(a)
l2.layer.runAnimation(a2)
l3.layer.runAnimation(a3)
self.myImageView.layer.runAnimation(Animation.rotationY(Float(M_PI) * 4, delay: 2), blockCompletion: { () -> () in
self.myImageView.layer.runAnimation(Animation.bounce(60, delay: 0.1))
self.myImageView.image = UIImage(named: "otherImage")
})