Skip to content
This repository has been archived by the owner on May 30, 2022. It is now read-only.
/ Gifu Public archive
forked from kaishin/Gifu

High-performance animated GIF support for iOS in Swift

License

Notifications You must be signed in to change notification settings

flyinghyrax/Gifu

 
 

Repository files navigation

Gifu

Travis Carthage compatible Join the chat at https://gitter.im/kaishin/gifu

Adds performant animated GIF support to UIKit. If you're looking for the Japanese prefecture, click here.

How?

Gifu uses a UIImageView subclass and an animator that keeps track of frames and their durations.

It uses CADisplayLink to animate the view and only keeps a limited number of resized 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):

Install

  • Add the following to your Cartfile: github "kaishin/Gifu"
  • Then run carthage update
  • Follow the current instructions in Carthage's README for up to date installation instructions.
  • Add the following to your Podfile: pod 'Gifu'
  • You will also need to make sure you're opting into using frameworks: use_frameworks!
  • Then run pod install with CocoaPods 0.36 or newer.

Usage

Start by instantiating an AnimatableImageView either in code or Interface Builder, then call animateWithImage(named:) or animateWithImageData(data:) on it.

let imageView = AnimatableImageView(frame: CGRect(...))
imageView.animateWithImage(named: "mugen.gif")

You can stop the animation anytime using imageView.stopAnimatingGIF(), and resume it using imageView.startAnimatingGIF().

The isAnimatingGIF() method returns the current animation state of the view if it has an animatable image.

See the full documentation.

Demo App

Clone or download the repository and open Gifu.xcworkspace to check out the demo app.

Compatibility

  • iOS 8+

Roadmap

  • Add ability to set the frame-rate

Contributors

Misc

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

License

See LICENSE.

About

High-performance animated GIF support for iOS in Swift

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 95.1%
  • Ruby 3.4%
  • Other 1.5%