Update README to reflect API changes
This commit is contained in:
parent
0e9cf2294d
commit
8013faea87
44
README.md
44
README.md
|
@ -4,20 +4,12 @@ Adds performant animated GIF support to UIKit, without subclassing `UIImageView`
|
||||||
|
|
||||||
#### Why?
|
#### Why?
|
||||||
|
|
||||||
Because Apple's `+animatedImage*` is not meant to be used for animated GIFs (loads all the frames in memory), and the few third party implementations that got it right (see [Credits](#credits)) still require you to use a `UIImageView` subclass, which is not very flexible and might clash with other application-specific functionality.
|
Because Apple's `+animatedImage*` is not meant to be used for animated GIFs (loads all the full-sized frames in memory), and the few third party implementations that got it right (see [Credits](#credits)) still require you to use a `UIImageView` subclass, which is not very flexible and might clash with other application-specific functionality.
|
||||||
|
|
||||||
#### How?
|
#### How?
|
||||||
|
|
||||||
Gifu is a `UIImage` subclass and `UIImageView` extension written in Swift.
|
Gifu uses a `UIImage` subclass and `UIImageView` extension written in Swift.
|
||||||
It uses `CADisplayLink` to animate the view and only keeps a limited number of
|
It relies on `CADisplayLink` to animate the view and optimizes the frames by resizing them.
|
||||||
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):
|
|
||||||
|
|
||||||
<img src="https://db.tt/ZLfx23hg" width="300" />
|
|
||||||
|
|
||||||
#### Install
|
#### Install
|
||||||
|
|
||||||
|
@ -27,17 +19,15 @@ If your prefer Git submodules or want to support iOS 7, you want to add the file
|
||||||
|
|
||||||
#### Usage
|
#### Usage
|
||||||
|
|
||||||
Call `setAnimatableImage(named:)` or
|
Start by instantiating an `AnimatedImage`, then pass it to your `UIImageView`'s `setAnimatedImage`:
|
||||||
`setAnimatableImage(data:)` on your `UIImageView` (or its subclass):
|
|
||||||
|
|
||||||
```swift
|
```swift
|
||||||
let imageView = UIImageView(...)
|
if let image = AnimatedImage.animatedImageWithName("mugen.gif") {
|
||||||
|
imageView.setAnimatedImage(image)
|
||||||
imageView.setAnimatableImage(named: "computer-kid.gif")
|
imageView.startAnimatingGIF()
|
||||||
// imageView.setAnimatableImage(data: NSData(...))
|
}
|
||||||
```
|
```
|
||||||
|
Note that the image view will not start animating until you call `startAnimatingGIF()`
|
||||||
The image view will not start animating until you call `startAnimatingGIF()`
|
|
||||||
on it. You can stop the animation anytime using `stopAnimatingGIF()`, and resume
|
on it. You can stop the animation anytime using `stopAnimatingGIF()`, and resume
|
||||||
it using `startAnimatingGIF()`. These methods will fallback to UIKit's `startAnimating()` and `stopAnimating()`
|
it using `startAnimatingGIF()`. These methods will fallback to UIKit's `startAnimating()` and `stopAnimating()`
|
||||||
if the image view has no animatable image.
|
if the image view has no animatable image.
|
||||||
|
@ -55,22 +45,18 @@ or UIKit's `isAnimating()` otherwise.
|
||||||
|
|
||||||
#### Roadmap
|
#### Roadmap
|
||||||
|
|
||||||
The usual suspects:
|
- Documentation.
|
||||||
|
|
||||||
- Add documentation.
|
|
||||||
- Write some basic tests.
|
- Write some basic tests.
|
||||||
|
- Add ability to pass a frame-rate argument to `startAnimatingGIF()`
|
||||||
|
|
||||||
Needless to say, you are welcome to contribute.
|
#### Contributors
|
||||||
|
|
||||||
#### Credits
|
- [Reda Lemeden](https://github.com/kaishin)
|
||||||
|
- [Tony DiPasquale](https://github.com/tonyd256)
|
||||||
|
|
||||||
- The animation technique described above was originally spotted on
|
#### Misc
|
||||||
[OLImageView](https://github.com/ondalabs/OLImageView), then improved in [YLGIFImage](https://github.com/liyong03/YLGIFImage).
|
|
||||||
|
|
||||||
- The font used in the logo is [Azuki](http://www.myfonts.com/fonts/bluevinyl/azuki/)
|
- The font used in the logo is [Azuki](http://www.myfonts.com/fonts/bluevinyl/azuki/)
|
||||||
|
|
||||||
- Kudos to my colleague [Tony DiPasquale](https://github.com/tonyd256) for helping out with the factory methods.
|
|
||||||
|
|
||||||
- The characters used in the icon and example image in the demo are from [Samurai Champloo](https://en.wikipedia.org/wiki/Samurai_Champloo).
|
- The characters used in the icon and example image in the demo are from [Samurai Champloo](https://en.wikipedia.org/wiki/Samurai_Champloo).
|
||||||
|
|
||||||
#### License
|
#### License
|
||||||
|
|
Loading…
Reference in New Issue