A performant animated GIF engine for iOS written in Swift based on FLAnimatedImage
XAnimatedImage
is a performant animated GIF engine for iOS written in Swift based on FLAnimatedImage
. An illustration is shown below:
Features
- Plays multiple GIFs simultaneously with a playback speed comparable to desktop browsers
- Honors variable frame delays
- Eliminates delays or blocking during the first playback loop
- Interprets the frame delays of fast GIFs the same way modern browsers do
Who is this for?
- Apps that don’t support animated GIFs yet
- Apps that already support animated GIFs but want a higher performance solution
- People who want to tinker with the code (the corresponding blog post describing the original FLAnimatedImage repo is a great place to start; also see the To Do section below)
Requirements
- iOS 7.1+
- Xcode 7.1+
Installation
XAnimatedImage
, like it’s original counterpart FLAnimatedImage
, is a well encapsulated drop-in component. Simply replace your UIImageView
instances with instances of XAnimatedImageView
to get animated GIF support. There is no central cache or state to manage.
Manually
You can integrate XAnimatedImage into your project manually. You can do it by copying the “Classes” folder in your project (make sure that “Create groups” option is selected).
Other
Other installation methods are currently being integrated into the project. Currently, this repository supports only manual installation. Planned, future installation methods will include:
- CocoaPods
- Carthage
##Usage
var animatedImage = XAnimatedImage(initWithAnimatedGIFData: NSData(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("example", ofType: "gif")!))!)
var animatedImageView = XAnimatedImageView()
animatedImageView.animatedImage = animatedImage
animatedImageView.frame = CGRectMake(0,0,100,100)
self.view.addSubview(animatedImageView)
##To Do
- Support other animated image formats such as APNG or WebP
- Integration into network libraries and image caches
- Investigate whether
FLAnimatedImage
should become aUIImage
subclass - Smarter buffering
- Investigate the usage of
GPUImage
for less CPU intensive image processing. - Support
CocoaPods
andCarthage
for installation methods.
##Contributions
This project owes most in part to the original FLAnimatedImage
contributors namely Raphael Schaad (github | @raphaelschaad).
If there any issues to be directed at me, you can reach me, Khaled Taha, @iamktothed.