Animo alternatives and similar libraries
Based on the "Animation" category.
Alternatively, view Animo alternatives based on common mentions on social networks and blogs.
-
IBAnimatable
Design and prototype UI, interaction, navigation, transition and animation for App Store ready Apps in Interface Builder with IBAnimatable. -
Keyframes
A library for converting Adobe AE shape based animations to a data format and play it back on Android and iOS devices. -
EasyAnimation
A Swift library to take the power of UIView.animateWithDuration() to a whole new level -
AHDownloadButton
Customizable download button with progress and transition animations. It is based on Apple's App Store download button. -
SamuraiTransition
Swift based library providing a collection of ViewController transitions featuring a number of neat “cutting” animations. -
CCMRadarView
CCMRadarView uses the IBDesignable tools to make an easy customizable radar view with animation
Get performance insights in less than 4 minutes
* 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?
README
Animo
Bring life to CALayers with SpriteKit-like animation builders.
Why use Animo?
Because declaring CAAnimation
s (especially with CAAnimationGroup
s) 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")
to this:
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)
)
)
Feature List
- All timing modes from http://easings.net/ are implemented.
- Choose how to mix your animations with grouping utilities:
group(...)
sequence(...)
autoreverse(...)
wait(...)
replay(...)
andreplayForever(...)
- No need to box native types and struct types in
NSValue
s! Animo will do that for you for:Int8
Int16
Int32
Int64
UInt8
UInt16
UInt32
UInt64
Int
UInt
CGFloat
Double
Float
CGPoint
CGSize
CGRect
CGAffineTransform
CGVector
CATransform3D
UIEdgeInsets
UIOffset
NSRange
- No need to bother between
CGColor
andUIColor
! Animo automatically converts the following types for you so you can just use UIKit objects all the time:UIColor
→CGColor
UIImage
→UIImage
UIBezierPath
→CGPath
- Don't bother type-casting
M_PI
anymore and just use Degrees-to-Radians (and vice-versa) extensions forCGFloat
,Double
, andFloat
!
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
Add
pod 'Animo'
to your Podfile
and run pod install
Install with Carthage
Add
github "eure/Animo" >= 1.2.0
to your Cartfile
and run carthage update
Install as Git Submodule
Run
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.
License
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.