by leverdeterre

leverdeterre /JMAnimatedImageView

Subclass of UIImageView to drive easy animations (manual rotation, Carousel, GIF support)

414 Stars 44 Forks Last release: over 5 years ago (0.2.4) Other 81 Commits 7 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

My other works


JMAnimatedImageView is a performant subclass of UIImageView:

  • Plays huge image animation using a minimum memory pressure,
  • Allows manual interactions with imageView to drive manualy animations,
  • Can use has a Carousel,
  • GIF are supported to load your animations.

Change Log

0.2.4 :

  • Improve documentation
  • Fix retain cycle (Thanks Instruments!)
  • JMGif allocation for a better integration with your favorites network libraries.


Simply replace your

instances with instances of

If using CocoaPods, the quickest way to try it out is to type this on the command line:

$ pod try JMAnimatedImageView


For a local animation using file from a bundle

In your code,

#import "JMAnimatedImageView.h"
#import "JMAnimatedImageView.h"
//GIF example
@property (weak, nonatomic) IBOutlet JMAnimatedImageView *jmImageView;

[self.jmImageView reloadAnimationImagesFromGifNamed:@"rock"]; self.jmImageView.animationType = JMAnimatedImageViewAnimationTypeAutomaticLinearWithoutTransition; [self.jmImageView startAnimating];

//PNG example with manual animation
@property (weak, nonatomic) IBOutlet JMAnimatedImageView *jmImageView;

self.jmImageView.animationDelegate = self; self.jmImageView.animationDatasource = self; [self.jmImageView reloadAnimationImages]; // self.jmImageView.animationType = JMAnimatedImageViewAnimationTypeAutomaticLinearWithoutTransition; self.jmImageView.memoryManagementOption = JMAnimatedImageViewMemoryLoadImageLowMemoryUsage; [self.jmImageView startAnimating];

For a remote Gif

@property (weak, nonatomic) IBOutlet JMAnimatedImageView *jmImageView;

[[JMApi sharedApi] downloadYourGifFileHasData:^(NSData *gifData) { self.animatedImageView.animationType = JMAnimatedImageViewAnimationTypeAutomaticLinearWithoutTransition; self.animatedImageView.memoryManagementOption = JMAnimatedImageViewMemoryLoadImageLowMemoryUsage; [self.animatedImageView reloadAnimationImagesFromGifData:gifData fromUrl:url]; [self.animatedImageView startAnimating]; }];

For a remote Gif using AFNetworking

    NSURLRequest *req = [NSURLRequest requestWithURL:url];

AFHTTPRequestOperation *postOperation = [[AFHTTPRequestOperation alloc] initWithRequest:req];
[postOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    self.animatedImageView.animationType = JMAnimatedImageViewAnimationTypeAutomaticLinearWithoutTransition;
    self.animatedImageView.memoryManagementOption = JMAnimatedImageViewMemoryLoadImageLowMemoryUsage;
    [self.animatedImageView reloadAnimationImagesFromGifData:responseObject fromUrl:url];
    [self.animatedImageView startAnimating];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Image error: %@", error);
    block(NO, nil);

[postOperation start];


  • AnimationType
typedef NS_ENUM(NSUInteger, JMAnimatedImageViewAnimationType) {
    JMAnimatedImageViewAnimationTypeInteractive = 0,

//Animation, carousel effect

//Automatic rotation, use animationDuration + animationRepeatCount


  • MemoryOption
typedef NS_ENUM(NSUInteger, JMAnimatedImageViewMemoryOption) {
    JMAnimatedImageViewMemoryLoadImageSystemCache = 0,  //images memory will be retain by system
    JMAnimatedImageViewMemoryLoadImageLowMemoryUsage,   //images loaded but not retained by the system
    JMAnimatedImageViewMemoryLoadImageCustom            //images loaded by you (JMOImageViewAnimationDatasource)
  • ImageViewOrder
typedef NS_ENUM(NSUInteger, JMAnimatedImageViewOrder) {
    JMAnimatedImageViewOrderNormal = 1,
    JMAnimatedImageViewOrderReverse = -1

Multi Gif and animation type (top interactive, leff automatic swipe effect, right automatic without animation)


JMimageView can generate Carousels


JMimageView allows interactive animations



  • Add support for APNG
  • Add support for WebP animated (work in progress but this feature is not actually supported :
  • * Add support for video format ?

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.