ShapeAnimation-Swift
Vector animation framework in Swift based on SwiftGraphics for iOS 9 and OSX. With ShapeAnimation you can easily create various animations with a nice Swift based syntax.
SVG animation development with SVGKit happens on the SVG branch. ShapeAnimation-ObjC is an alternative vector animation framework in Objective-C.
Also note this project has moved to Swift 2.0 which requires Xcode 7.0 and Mac OS X 10.10.
What's included
-
ShapeView class which contains vector shape layers.
- Helper functions to add image, text, circle, regular polygon, lines and other shapes.
- Support gradient fill with animation.
- Enumerate, hit-test or find layers.
-
Animation extension functions of CALayer.
- opacityAnimation, flashAnimation, backColorAnimation
- scaleAnimation, tapAnimation, transformAnimation
- rotate360Degrees, rotationAnimation
- shakeAnimation, moveAnimation, moveOnPathAnimation
- slideToRight, slideAnimation, flipHorizontally, flipVertically
- Layer dragging: constrainCenterToSuperview, bringOnScreen
-
Animation extension functions of CAShapeLayer.
- strokeStartAnimation, strokeEndAnimation, lineWidthAnimation
- strokeColorAnimation, fillColorAnimation, dashPhaseAnimation
- switchPathAnimation
-
Group animation and cascaded animation.
- animationGroup for the same layer
- applyAnimations for multiple layers
- Use the block-based function in apply() to play cascaded animations.
- Pause, resume or stop animations.
-
Animations with customized properties
- Use AnimationLayer class to draw customized animations.
- Animation with sliders example: EllipseViewController.swift
Usage
Please see the examples in MasterViewController.swift.
let layer1 = self.addLinesLayer(view, points:[(10.0,20.0),(150.0,40.0),(120.0,320.0)])
layer1.strokeEndAnimation().apply() {
layer1.shakeAnimation().apply()
}
let la2 = self.addLinesLayer(view, points:points2, color: UIColor.blueColor())
lla2.scaleAnimation(from:1, to:1.1, repeatCount:3).apply(duration:0.3)
let la3 = self.addLinesLayer(view, points:points3, color: UIColor.greenColor())
la3.flashAnimation(repeatCount:6).apply()
let la4 = self.addLinesLayer(view, points:[(10.0,20.0), (150.0,40.0), (120.0,120.0)])
let a1 = la4.moveOnPathAnimation(path).setDuration(1.6)
let a2 = la4.rotate360Degrees().setRepeatCount(2)
animationGroup([a1, a2]).autoreverses().apply()
Help Wanted
All of this code is very much a work in progress. I'm adding and changing functionality as needed.
Your help wanted. Please fork this project and submit pull requests or [issues][issues]. [issues]: https://github.com/rhcad/ShapeAnimation-Swift/issues
Contributions are always welcome in the following areas:
- Header doc comments explaining what the functions do
- Useful animation template or application examples
- Fix issues about animation, Swift usage rules or translations
License
ShapeAnimation-Swift is released under a BSD License. See LICENSE file for details.
FAQ
- Could not build Objective-C module 'ShapeAnimation':
- Quit Xcode and delete the sub folders in ~/Library/Developer/Xcode/DerivedData/.