Animo alternatives and similar libraries
Based on the "Animation" category
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of Animo or a related project?
Bring life to CALayers with SpriteKit-like animation builders.
Why use Animo?
CAAnimations (especially with
CAAnimationGroups) is very verbose and tedious.
Animo turns this:
let positionAnimation = CABasicAnimation(keyPath: "position") positionAnimation.fromValue = NSValue(CGPoint: fromPoint) positionAnimation.toValue = NSValue(CGPoint: toPoint) let colorAnimation = CABasicAnimation(keyPath: "backgroundColor") colorAnimation.fromValue = fromColor.CGColor colorAnimation.toValue = toColor.CGColor let animationGroup = CAAnimationGroup() animationGroup.animations = [positionAnimation, colorAnimation] animationGroup.fillMode = kCAFillModeForwards animationGroup.removedOnCompletion = false animationGroup.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) someView.layer.addAnimation(animationGroup, forKey: "animationGroup")
someView.layer.runAnimation( Animo.group( Animo.move(from: fromPoint, to: toPoint, duration: 1), Animo.keyPath("backgroundColor", from: fromColor, to: toColor, duration: 1), timingMode: .EaseInOut, options: Options(fillMode: .Forwards) ) )
- All timing modes from http://easings.net/ are implemented.
- Choose how to mix your animations with grouping utilities:
- No need to box native types and struct types in
NSValues! Animo will do that for you for:
- No need to bother between
UIColor! Animo automatically converts the following types for you so you can just use UIKit objects all the time:
- Don't bother type-casting
M_PIanymore and just use Degrees-to-Radians (and vice-versa) extensions for
Here's a slightly complex animation that showcases what else you can do with Animo:
someView.layer.runAnimation( Animo.sequence( // Runs a list of animations in sequence Animo.wait(1), // Waits for a certain interval before running the next animation Animo.replayForever( // Replays the animation endlessly Animo.sequence( Animo.move( // Moves the layer's position by: CGPoint(x: 100, y: 200), // "by", "from", and "to" arguments are supported duration: 2, timingMode: .Spring(damping: 1) // simplistic spring function that doesn't rely on physics ), Animo.rotateDegrees( // Rotates the layer (degrees and radians variants are supported) by: -180, duration: 1, timingMode: .EaseInOutBack ), Animo.autoreverse( // Auto-reverses the animation Animo.keyPath( "cornerRadius", // Any custom KVC key is supported as well! to: 10, duration: 1, timingMode: .EaseInOutBack ) ), Animo.group( // Runs multiple animations together Animo.scaleX( by: 2, duration: 1, timingMode: .EaseInOutBack ), Animo.scaleY( by: 0.5, duration: 1, timingMode: .EaseInOutBack ) ), Animo.wait(1), Animo.move( by: CGPoint(x: -100, y: -200), duration: 2, timingMode: .EaseInOutBack ), Animo.rotateDegrees( by: 180, duration: 1, timingMode: .EaseInOutBack ), Animo.group( Animo.scaleX( to: 1, duration: 1, timingMode: .EaseInOutBack ), Animo.scaleY( to: 1, duration: 1, timingMode: .EaseInOutBack ) ) ) ) ) )
Install with CocoaPods
Podfile and run
Install with Carthage
github "eure/Animo" >= 1.2.0
Cartfile and run
Install as Git Submodule
git submodule add https://github.com/eure/Animo.git <destination directory>
To install as a framework:
Drag and drop Animo.xcodeproj to your project.
To include directly in your app module:
Add all .swift files to your project.
Animo is released under an MIT license. See the LICENSE file for more information.
*Note that all licence references and agreements mentioned in the Animo README section above are relevant to that project's source code only.