Go to file
Reda Lemeden fcaa1a9c19 Disable animation on load 2014-09-11 23:17:43 +02:00
source Disable animation on load 2014-09-11 23:17:43 +02:00
LICENSE Update LICENSE & README 2014-09-10 21:41:13 +02:00
README.md Fix indent in the README 2014-09-10 21:44:28 +02:00
figure.gif Update README 2014-09-07 23:45:51 +02:00
logo.svg Cleanup SVG 2014-09-08 00:11:15 +02:00

README.md

Adds animated GIF support to UIKit. For the Japanese prefecture, click here.

Why?

Because Apple's +animatedImage* sucks, and the few third party implementations that got it right (see Credits) still require you to use a UIImageView subclass.

How?

Gifu is a UIImage subclass and UIImageView extension written in Swift. It uses CADisplayLink to animate the view and only keeps a limited number of frames in-memory, which exponentially minimizes memory usage for large GIF files (+300 frames).

The figure below summarizes how this works in practice. Given an image containing 10 frames, Gifu will load the current frame (red), pre-load the next two frames in this example (orange), and nullify all the other frames to free up memory (gray):

Usage

Use git submodules or drag-and-drop the files in your Xcode project. I can't believe I'm saying this in 2014.

Once done, you can call setAnimatableImage(named:) or setAnimatableImage(data:) on your UIImageView (or its subclass):

let imageView = UIImageView(...)

imageView.setAnimatableImage(named: "computer-kid.gif")
// or
imageView.setAnimatableImage(data: NSData(...))

You can start/stop the animation using UIImageView's startAnimating() and stopAnimating().

You can find a demo app in this branch (requires Xcode 6).

Compatibility

  • iOS 7+

Roadmap

The usual suspects:

  • Add documentation.
  • Write some basic tests.

Needless to say, you are welcome to contribute.

Credits

  • The animation technique described above was originally spotted on OLImageView, then improved in YLGIFImage.

  • The font used in the logo is Azuki

  • Kudos to my colleague Tony DiPasquale for helping out with the factory methods.

  • The characters used in the icon and example image in the demo are from Samurai Champloo.

License

See LICENSE.