From 9ea950355bc498d707f1817d3be59a152f3cc717 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Je=CC=81ro=CC=82me=20Morissard?= Date: Wed, 1 Oct 2014 22:36:22 +0200 Subject: [PATCH] Refactor GIF works --- .../project.pbxproj | 16 +-- .../UserInterfaceState.xcuserstate | Bin 72346 -> 73967 bytes ...eView+JMGif.h => JMAnimatedGifImageView.h} | 7 +- .../JMAnimatedGifImageView.m | 136 ++++++++++++++++++ .../JMAnimatedImageView+Image.m | 13 +- .../JMAnimatedImageView+JMGif.m | 49 ------- .../JMAnimatedImageView/JMAnimatedImageView.h | 19 ++- .../JMAnimatedImageView/JMAnimatedImageView.m | 64 ++------- .../JMAnimatedImageView/JMGif.m | 5 + .../JMAnimatedImageView/JMFLViewController.m | 20 +-- .../JMFLViewController.xib | 6 +- .../JMTableViewController.h | 4 +- .../JMTableViewController.m | 8 +- .../JMAnimatedImageView/JMViewController.m | 19 +-- 14 files changed, 215 insertions(+), 151 deletions(-) rename JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/{JMAnimatedImageView+JMGif.h => JMAnimatedGifImageView.h} (84%) create mode 100644 JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedGifImageView.m delete mode 100644 JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView+JMGif.m diff --git a/JMAnimatedImageView/JMAnimatedImageView.xcodeproj/project.pbxproj b/JMAnimatedImageView/JMAnimatedImageView.xcodeproj/project.pbxproj index c38d55c..fc890f4 100644 --- a/JMAnimatedImageView/JMAnimatedImageView.xcodeproj/project.pbxproj +++ b/JMAnimatedImageView/JMAnimatedImageView.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + C2323BDD19DC94B000C62D22 /* JMAnimatedGifImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = C2323BDC19DC94B000C62D22 /* JMAnimatedGifImageView.m */; }; + C2323BDE19DC94B000C62D22 /* JMAnimatedGifImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = C2323BDC19DC94B000C62D22 /* JMAnimatedGifImageView.m */; }; C24A92DC199F4C0800CFDBE0 /* 0_verge_super_wide.jpg in Resources */ = {isa = PBXBuildFile; fileRef = C24A92D1199F4C0800CFDBE0 /* 0_verge_super_wide.jpg */; }; C24A92DD199F4C0800CFDBE0 /* 10_verge_super_wide.jpg in Resources */ = {isa = PBXBuildFile; fileRef = C24A92D2199F4C0800CFDBE0 /* 10_verge_super_wide.jpg */; }; C24A92DE199F4C0800CFDBE0 /* 1_verge_super_wide.jpg in Resources */ = {isa = PBXBuildFile; fileRef = C24A92D3199F4C0800CFDBE0 /* 1_verge_super_wide.jpg */; }; @@ -125,8 +127,6 @@ C2B753F9199E88A9004BB1C3 /* UIImage+JM.m in Sources */ = {isa = PBXBuildFile; fileRef = C2B753F6199E88A9004BB1C3 /* UIImage+JM.m */; }; C2B753FC199E8AFE004BB1C3 /* JMTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C2B753FB199E8AFE004BB1C3 /* JMTableViewController.m */; }; C2B753FF199E8B81004BB1C3 /* JMTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = C2B753FE199E8B81004BB1C3 /* JMTableViewCell.m */; }; - C2D0974319D6001000AA1980 /* JMAnimatedImageView+JMGif.m in Sources */ = {isa = PBXBuildFile; fileRef = C2D0974219D6001000AA1980 /* JMAnimatedImageView+JMGif.m */; }; - C2D0974419D6001000AA1980 /* JMAnimatedImageView+JMGif.m in Sources */ = {isa = PBXBuildFile; fileRef = C2D0974219D6001000AA1980 /* JMAnimatedImageView+JMGif.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -140,6 +140,8 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + C2323BDB19DC94B000C62D22 /* JMAnimatedGifImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JMAnimatedGifImageView.h; sourceTree = ""; }; + C2323BDC19DC94B000C62D22 /* JMAnimatedGifImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JMAnimatedGifImageView.m; sourceTree = ""; }; C24A92D1199F4C0800CFDBE0 /* 0_verge_super_wide.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 0_verge_super_wide.jpg; sourceTree = ""; }; C24A92D2199F4C0800CFDBE0 /* 10_verge_super_wide.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 10_verge_super_wide.jpg; sourceTree = ""; }; C24A92D3199F4C0800CFDBE0 /* 1_verge_super_wide.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 1_verge_super_wide.jpg; sourceTree = ""; }; @@ -281,8 +283,6 @@ C2B753FB199E8AFE004BB1C3 /* JMTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JMTableViewController.m; sourceTree = ""; }; C2B753FD199E8B81004BB1C3 /* JMTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JMTableViewCell.h; sourceTree = ""; }; C2B753FE199E8B81004BB1C3 /* JMTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JMTableViewCell.m; sourceTree = ""; }; - C2D0974119D6001000AA1980 /* JMAnimatedImageView+JMGif.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "JMAnimatedImageView+JMGif.h"; sourceTree = ""; }; - C2D0974219D6001000AA1980 /* JMAnimatedImageView+JMGif.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "JMAnimatedImageView+JMGif.m"; sourceTree = ""; }; C2EAE6E519C0241700B46A27 /* JMAnimatedLog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JMAnimatedLog.h; sourceTree = ""; }; C2F4DB6B19BE5C4700F04261 /* JMAmimatedImageViewMacro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JMAmimatedImageViewMacro.h; sourceTree = ""; }; /* End PBXFileReference section */ @@ -535,8 +535,8 @@ C2F4DB6B19BE5C4700F04261 /* JMAmimatedImageViewMacro.h */, C2B753EF199E88A9004BB1C3 /* JMAnimatedImageView.h */, C2B753F0199E88A9004BB1C3 /* JMAnimatedImageView.m */, - C2D0974119D6001000AA1980 /* JMAnimatedImageView+JMGif.h */, - C2D0974219D6001000AA1980 /* JMAnimatedImageView+JMGif.m */, + C2323BDB19DC94B000C62D22 /* JMAnimatedGifImageView.h */, + C2323BDC19DC94B000C62D22 /* JMAnimatedGifImageView.m */, C2B03DFA19A52D000032B240 /* JMAnimatedImageView+Image.h */, C2B03DFB19A52D000032B240 /* JMAnimatedImageView+Image.m */, C2B753F1199E88A9004BB1C3 /* JMAnimationOperation.h */, @@ -745,13 +745,13 @@ C2B75333199E8802004BB1C3 /* main.m in Sources */, C2B7533D199E8802004BB1C3 /* JMViewController.m in Sources */, C2B03E0019A554E30032B240 /* JMFLViewController.m in Sources */, - C2D0974319D6001000AA1980 /* JMAnimatedImageView+JMGif.m in Sources */, C2954D1719A72C7600494F41 /* AppInformationsManager.m in Sources */, C2B03DFC19A52D000032B240 /* JMAnimatedImageView+Image.m in Sources */, C2B753F8199E88A9004BB1C3 /* JMAnimationOperation.m in Sources */, C2B753F9199E88A9004BB1C3 /* UIImage+JM.m in Sources */, C2B753FC199E8AFE004BB1C3 /* JMTableViewController.m in Sources */, C2954D1C19A72C7600494F41 /* UIDevice+iAppInfos.m in Sources */, + C2323BDD19DC94B000C62D22 /* JMAnimatedGifImageView.m in Sources */, C2954D1B19A72C7600494F41 /* UIApplication+iAppInfos.m in Sources */, C2B03DF919A474190032B240 /* JMGif.m in Sources */, C2954D1919A72C7600494F41 /* JMOMobileProvisionning.m in Sources */, @@ -765,8 +765,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C2D0974419D6001000AA1980 /* JMAnimatedImageView+JMGif.m in Sources */, C2B75352199E8802004BB1C3 /* JMAnimatedImageViewTests.m in Sources */, + C2323BDE19DC94B000C62D22 /* JMAnimatedGifImageView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/JMAnimatedImageView/JMAnimatedImageView.xcodeproj/project.xcworkspace/xcuserdata/jeromemorissard.xcuserdatad/UserInterfaceState.xcuserstate b/JMAnimatedImageView/JMAnimatedImageView.xcodeproj/project.xcworkspace/xcuserdata/jeromemorissard.xcuserdatad/UserInterfaceState.xcuserstate index f7383c465eff2f3ca1c385f9d487f76d4f983ea8..adc15989b0acbdc37104618e3cb91567aa4afb94 100644 GIT binary patch literal 73967 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 literal 72346 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
a^{2>-6aK?)2^S?+ok=
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
ONci_y(BCg>&i@PVJvHJ0

diff --git a/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView+JMGif.h b/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedGifImageView.h
similarity index 84%
rename from JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView+JMGif.h
rename to JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedGifImageView.h
index 64e70df..cb54008 100644
--- a/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView+JMGif.h
+++ b/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedGifImageView.h
@@ -1,15 +1,15 @@
 //
-//  JMAnimatedImageView+JMGif.h
+//  JMAnimatedGifImageView.h
 //  JMAnimatedImageView
 //
-//  Created by jerome morissard on 26/09/14.
+//  Created by jerome morissard on 01/10/14.
 //  Copyright (c) 2014 jerome morissard. All rights reserved.
 //
 
 #import "JMAnimatedImageView.h"
 #import "JMGif.h"
 
-@interface JMAnimatedImageView (JMGif)
+@interface JMAnimatedGifImageView : JMAnimatedImageView
 
 //Specific to GIF
 @property (strong, readonly, nonatomic) JMGif *gifObject;
@@ -35,5 +35,4 @@
  */
 - (void)reloadAnimationImagesFromGifNamed:(NSString *)gitName;
 
-
 @end
diff --git a/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedGifImageView.m b/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedGifImageView.m
new file mode 100644
index 0000000..d5de5a5
--- /dev/null
+++ b/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedGifImageView.m
@@ -0,0 +1,136 @@
+//
+//  JMAnimatedGifImageView.m
+//  JMAnimatedImageView
+//
+//  Created by jerome morissard on 01/10/14.
+//  Copyright (c) 2014 jerome morissard. All rights reserved.
+//
+
+#import "JMAnimatedGifImageView.h"
+#import "JMAnimatedLog.h"
+#import "JMAnimationOperation.h"
+
+@implementation JMAnimatedGifImageView
+
+- (BOOL)isAGifImageView
+{
+    if (self.gifObject) {
+        return YES;
+    }
+    return NO;
+}
+
+- (void)reloadAnimationImagesFromGifData:(NSData *)data
+{
+    _gifObject = [[JMGif alloc] initWithData:data];
+    self.animationDuration = JMDefaultGifDuration;
+    [self setCurrentIndex:0];
+}
+
+- (void)reloadAnimationImagesFromGifNamed:(NSString *)gitName
+{
+    _gifObject = [JMGif gifNamed:gitName];
+    self.animationDuration = JMDefaultGifDuration;
+    [self setCurrentIndex:0];
+    [self updateGestures];
+}
+
+- (void)moveCurrentCardImageFromIndex:(NSInteger)fromIndex
+                                shift:(NSInteger)shift
+                         withDuration:(NSTimeInterval)duration
+                      animationOption:(UIImageViewAnimationOption)option
+                  withCompletionBlock:(JMCompletionFinishBlock)finishBlock
+{
+    dispatch_async(self.animationManagementQueue, ^{
+        
+        NSTimeInterval unitDuration;
+        NSInteger shiftUnit = shift / abs((int)shift); // 1 ou -1
+        
+        if (duration == JMDefaultGifDuration) {
+            unitDuration = duration;
+            
+        } else {
+            if (option == UIImageViewAnimationOptionLinear) {
+                unitDuration = duration / abs((int)shift);
+            } else {
+                unitDuration = duration / abs((int)(shift * shift));
+            }
+        }
+        
+        JMLog(@"%s fromIndex:%d shift:%d duration:%lf",__FUNCTION__,(int)fromIndex,(int)shift,duration);
+        
+        //[self cancelAnimations];
+        [self.animationQueue cancelAllOperations];
+        [self.animationQueue waitUntilAllOperationsAreFinished];
+        
+        for (int i = 0; i < (int)abs((int)shift) ; i++) {
+            
+                NSInteger index = [self realIndexForComputedIndex:fromIndex+i*shiftUnit];
+                JMGifItem *item = [[self.gifObject items] objectAtIndex:index];
+            
+                JMAnimationOperation *operation = [JMAnimationOperation animationOperationWithDuration:item.delayDuration
+                                                                                            completion:^(BOOL finished)
+                                                   {
+                                                       
+                                                       if (self.animationType == JMAnimatedImageViewAnimationTypeAutomaticLinearWithoutTransition) {
+                                                           if ([self operationQueueIsFinished] == YES) {
+                                                               if (finishBlock) {
+                                                                   finishBlock(YES);
+                                                               }
+                                                               
+                                                               if (self.animationRepeatCount == 0 && self.animationState == UIImageViewAnimationStateInPgrogress) {
+                                                                   [self continueAnimating];
+                                                               }
+                                                           }
+                                                       }
+                                                   }];
+                
+                operation.animatedImageView = self;
+                operation.imageIndex = index;                
+                [self.animationQueue addOperation:operation];
+        }
+    });
+}
+
+- (void)startAnimating
+{
+    self.animationState = UIImageViewAnimationStateInPgrogress;
+    
+    if ([self checkLifeCycleSanity] == NO) {
+        return;
+    }
+    
+    if (self.animationType == JMAnimatedImageViewAnimationTypeAutomaticLinearWithoutTransition) {
+        [self moveCurrentCardImageFromIndex:self.currentIndex
+                                      shift:self.gifObject.items.count
+                               withDuration:self.animationDuration
+                            animationOption:UIImageViewAnimationOptionLinear
+                        withCompletionBlock:NULL];
+        
+    } else if (self.animationType == JMAnimatedImageViewAnimationTypeAutomaticLinear) {
+        [self changeImageToIndex:(self.currentIndex + 1) withTimeInterval:self.animationDuration repeat:YES];
+    }
+}
+
+- (void)continueAnimating
+{
+    self.animationState = UIImageViewAnimationStateInPgrogress;
+    
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if ([self checkLifeCycleSanity] == NO) {
+            return;
+        }
+        
+        if ([self operationQueueIsFinished] == NO) {
+            return;
+        }
+        
+        [self moveCurrentCardImageFromIndex:self.currentIndex
+                                      shift:self.gifObject.items.count
+                               withDuration:self.animationDuration
+                            animationOption:UIImageViewAnimationOptionLinear
+                        withCompletionBlock:NULL];
+    });
+}
+
+@end
diff --git a/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView+Image.m b/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView+Image.m
index 07f7d30..2aaa7f3 100644
--- a/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView+Image.m
+++ b/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView+Image.m
@@ -8,14 +8,15 @@
 
 #import "JMAnimatedImageView+Image.h"
 #import "UIImage+JM.h"
-#import "JMAnimatedImageView+JMGif.h"
+#import "JMAnimatedGifImageView.h"
 
 @implementation JMAnimatedImageView (Image)
 
 - (UIImage *)imageAtIndex:(NSInteger)index
 {
-    if ([self isAGifImageView]) {
-        return [self.gifObject imageAtIndex:index];
+    if ([self isKindOfClass:[JMAnimatedGifImageView class]]) {
+        JMAnimatedGifImageView *gifView = (JMAnimatedGifImageView *)self;
+        return [gifView.gifObject imageAtIndex:index];
         
     } else if ([self.animationDatasource respondsToSelector:@selector(imageAtIndex:forAnimatedImageView:)]) {
         return [self.animationDatasource imageAtIndex:index forAnimatedImageView:self];
@@ -31,8 +32,10 @@ - (UIImage *)imageAtIndex:(NSInteger)index
 
 - (NSUInteger)numberOfImages
 {
-    if ([self isAGifImageView]) {
-        return self.gifObject.items.count;
+    if ([self isKindOfClass:[JMAnimatedGifImageView class]]) {
+        JMAnimatedGifImageView *gifView = (JMAnimatedGifImageView *)self;
+        return gifView.gifObject.items.count;
+        
     } else {
         if ([self.animationDatasource respondsToSelector:@selector(numberOfImagesForAnimatedImageView:)]) {
             return [self.animationDatasource numberOfImagesForAnimatedImageView:self];
diff --git a/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView+JMGif.m b/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView+JMGif.m
deleted file mode 100644
index 8491dd2..0000000
--- a/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView+JMGif.m
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-//  JMAnimatedImageView+JMGif.m
-//  JMAnimatedImageView
-//
-//  Created by jerome morissard on 26/09/14.
-//  Copyright (c) 2014 jerome morissard. All rights reserved.
-//
-
-#import "JMAnimatedImageView+JMGif.h"
-#import 
-
-//JMGif *gifObject
-
-@implementation JMAnimatedImageView (JMGif)
-
-- (JMGif *)gifObject
-{
-    return objc_getAssociatedObject(self, _cmd);
-}
-
-- (void)setGifObject:(JMGif *)gifObject
-{
-    objc_setAssociatedObject(self, @selector(gifObject), gifObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
-}
-
-- (BOOL)isAGifImageView
-{
-    if (self.gifObject) {
-        return YES;
-    }
-    return NO;
-}
-
-- (void)reloadAnimationImagesFromGifData:(NSData *)data
-{
-    self.gifObject = [[JMGif alloc] initWithData:data];
-    self.animationDuration = JMDefaultGifDuration;
-    [self setCurrentIndex:0];
-}
-
-- (void)reloadAnimationImagesFromGifNamed:(NSString *)gitName
-{
-    self.gifObject = [JMGif gifNamed:gitName];
-    self.animationDuration = JMDefaultGifDuration;
-    [self setCurrentIndex:0];
-    [self updateGestures];
-}
-
-@end
diff --git a/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView.h b/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView.h
index dc7a5a6..03fa693 100644
--- a/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView.h
+++ b/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView.h
@@ -31,6 +31,16 @@ typedef NS_ENUM(NSUInteger, JMAnimatedImageViewOrder) {
     JMAnimatedImageViewOrderReverse = -1
 };
 
+typedef NS_ENUM(NSUInteger, UIImageViewAnimationOption) {
+    UIImageViewAnimationOptionLinear = 0,
+    UIImageViewAnimationOptionCurveEaseInOut
+};
+
+typedef NS_ENUM(NSUInteger, UIImageViewAnimationState) {
+    UIImageViewAnimationStateStopped = 0,
+    UIImageViewAnimationStateInPgrogress
+};
+
 typedef void (^JMCompletionFinishBlock)(BOOL resul);
 
 @interface JMAnimatedImageView : UIImageView
@@ -41,7 +51,10 @@ typedef void (^JMCompletionFinishBlock)(BOOL resul);
 @property (assign, nonatomic) JMAnimatedImageViewMemoryOption memoryManagementOption;
 @property (assign, nonatomic) JMAnimatedImageViewOrder imageOrder;
 @property (assign, nonatomic) BOOL interactiveAnimation;
-@property (nonatomic, assign) NSInteger currentIndex;
+@property (assign, nonatomic) NSInteger currentIndex;
+@property (assign, nonatomic) UIImageViewAnimationState animationState;
+@property (strong, nonatomic, readonly) dispatch_queue_t animationManagementQueue;
+@property (strong, nonatomic, readonly) NSOperationQueue *animationQueue;
 
 /**
  * reloadAnimationImages, This method will call animationDatasource
@@ -82,5 +95,9 @@ typedef void (^JMCompletionFinishBlock)(BOOL resul);
 - (void)animateToIndex:(NSInteger)index withDuration:(NSTimeInterval)duration withCompletionBlock:(JMCompletionFinishBlock)finishBlock;
 
 - (void)updateGestures;
+- (void)changeImageToIndex:(NSInteger)index withTimeInterval:(NSTimeInterval)duration repeat:(BOOL)repeat;
+- (BOOL)operationQueueIsFinished;
+- (BOOL)checkLifeCycleSanity;
+- (NSInteger)realIndexForComputedIndex:(NSInteger)index;
 
 @end
diff --git a/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView.m b/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView.m
index d74a7ed..53c40ee 100644
--- a/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView.m
+++ b/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView.m
@@ -11,25 +11,11 @@
 #import "UIImage+JM.h"
 #import "JMAnimatedImageView+Image.h"
 #import "JMAnimatedLog.h"
-#import "JMAnimatedImageView+JMGif.h"
-
-typedef NS_ENUM(NSUInteger, UIImageViewAnimationOption) {
-    UIImageViewAnimationOptionLinear = 0,
-    UIImageViewAnimationOptionCurveEaseInOut
-};
-
-typedef NS_ENUM(NSUInteger, UIImageViewAnimationState) {
-    UIImageViewAnimationStateStopped = 0,
-    UIImageViewAnimationStateInPgrogress
-};
 
 @interface JMAnimatedImageView()
 @property (nonatomic, assign) NSInteger operationInQueue;
-@property (nonatomic, strong) NSOperationQueue *animationQueue;
 @property (nonatomic, strong) UIPanGestureRecognizer *panGesture;
 @property (nonatomic, strong) UITapGestureRecognizer *tapGesture;
-@property (nonatomic, strong) dispatch_queue_t animationManagementQueue;
-@property (assign, nonatomic) UIImageViewAnimationState animationState;
 
 //Specific to animation type JMAnimatedImageViewAnimationTypeManualSwipe
 @property (nonatomic, strong) UIImageView *tempSwapedImageView;
@@ -379,17 +365,11 @@ - (void)moveCurrentCardImageFromIndex:(NSInteger)fromIndex
         for (int i = 0; i < (int)abs((int)shift) ; i++) {
                 
             currentInterval = currentInterval + unitDuration;
-            if(((currentInterval < minimumInterval) && [self isAGifImageView] == NO)) {
+            if(currentInterval < minimumInterval) {
                 continue;
                 
             } else {
                 NSInteger index = [self realIndexForComputedIndex:fromIndex+i*shiftUnit];
-
-                if ([self isAGifImageView]) {
-                    JMGifItem *item = [[self.gifObject items] objectAtIndex:index];
-                    currentInterval = [item delayDuration];
-                }
-                
                 JMAnimationOperation *operation = [JMAnimationOperation animationOperationWithDuration:currentInterval
                                                                                             completion:^(BOOL finished)
                 {
@@ -511,26 +491,18 @@ - (void)setImage:(UIImage *)img forCurrentIndex:(NSInteger)index
 
 - (void)startAnimating
 {
-    self.animationState = UIImageViewAnimationStateInPgrogress;
+    _animationState = UIImageViewAnimationStateInPgrogress;
 
     if ([self checkLifeCycleSanity] == NO) {
         return;
     }
     
     if (self.animationType == JMAnimatedImageViewAnimationTypeAutomaticLinearWithoutTransition) {
-        if ([self isAGifImageView]) {
-            [self moveCurrentCardImageFromIndex:self.currentIndex
-                                          shift:self.gifObject.items.count
-                                   withDuration:self.animationDuration
-                                animationOption:UIImageViewAnimationOptionLinear
-                            withCompletionBlock:NULL];
-        } else {
-            [self moveCurrentCardImageFromIndex:self.currentIndex
-                                          shift:[self numberOfImages]
-                                   withDuration:self.animationDuration
-                                animationOption:UIImageViewAnimationOptionLinear
-                            withCompletionBlock:NULL];
-        }
+        [self moveCurrentCardImageFromIndex:self.currentIndex
+                                      shift:[self numberOfImages]
+                               withDuration:self.animationDuration
+                            animationOption:UIImageViewAnimationOptionLinear
+                        withCompletionBlock:NULL];
 
     } else if (self.animationType == JMAnimatedImageViewAnimationTypeAutomaticLinear) {
         [self changeImageToIndex:(self.currentIndex + 1) withTimeInterval:self.animationDuration repeat:YES];
@@ -539,7 +511,7 @@ - (void)startAnimating
 
 - (void)continueAnimating
 {
-    self.animationState = UIImageViewAnimationStateInPgrogress;
+    _animationState = UIImageViewAnimationStateInPgrogress;
 
     dispatch_async(dispatch_get_main_queue(), ^{
         if ([self checkLifeCycleSanity] == NO) {
@@ -550,25 +522,17 @@ - (void)continueAnimating
             return;
         }
         
-        if ([self isAGifImageView]) {
-            [self moveCurrentCardImageFromIndex:self.currentIndex
-                                          shift:self.gifObject.items.count
-                                   withDuration:self.animationDuration
-                                animationOption:UIImageViewAnimationOptionLinear
-                            withCompletionBlock:NULL];
-        } else {
-            [self moveCurrentCardImageFromIndex:self.currentIndex
-                                          shift:[self numberOfImages]
-                                   withDuration:self.animationDuration
-                                animationOption:UIImageViewAnimationOptionLinear
-                            withCompletionBlock:NULL];
-        }
+        [self moveCurrentCardImageFromIndex:self.currentIndex
+                                      shift:[self numberOfImages]
+                               withDuration:self.animationDuration
+                            animationOption:UIImageViewAnimationOptionLinear
+                        withCompletionBlock:NULL];
     });
 }
 
 - (void)stopAnimating
 {
-    self.animationState = UIImageViewAnimationStateStopped;
+    _animationState = UIImageViewAnimationStateStopped;
     [self cancelAnimations];
 }
 
diff --git a/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMGif.m b/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMGif.m
index 8f4f065..160cd5b 100644
--- a/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMGif.m
+++ b/JMAnimatedImageView/JMAnimatedImageView/JMAnimatedImageView/JMGif.m
@@ -257,6 +257,11 @@ - (instancetype)initWithImage:(UIImage *)image imagePath:(NSString *)imagePath f
         // }
         _delay = frameProperties;
         _imagePath = imagePath;
+        
+        //dont keep UIImage because we can get it from the _imagePath
+        if (_imagePath) {
+            _image = nil;
+        }
     }
     return self;
 }
diff --git a/JMAnimatedImageView/JMAnimatedImageView/JMFLViewController.m b/JMAnimatedImageView/JMAnimatedImageView/JMFLViewController.m
index 987c910..116821c 100644
--- a/JMAnimatedImageView/JMAnimatedImageView/JMFLViewController.m
+++ b/JMAnimatedImageView/JMAnimatedImageView/JMFLViewController.m
@@ -7,13 +7,12 @@
 //
 
 #import "JMFLViewController.h"
-#import "JMAnimatedImageView.h"
-#import "JMAnimatedImageView+JMGif.h"
+#import "JMAnimatedGifImageView.h"
 
 @interface JMFLViewController ()
-@property (weak, nonatomic) IBOutlet JMAnimatedImageView *carImageView1;
-@property (weak, nonatomic) IBOutlet JMAnimatedImageView *carImageView2;
-@property (weak, nonatomic) IBOutlet JMAnimatedImageView *carImageView3;
+@property (weak, nonatomic) IBOutlet JMAnimatedGifImageView *carImageView1;
+@property (weak, nonatomic) IBOutlet JMAnimatedGifImageView *carImageView2;
+@property (weak, nonatomic) IBOutlet JMAnimatedGifImageView *carImageView3;
 @end
 
 @implementation JMFLViewController
@@ -30,9 +29,10 @@ - (void)viewDidLoad
     JMDemoGIFMultipleAnimationUsingImageViewImageAndSystemCache
     */
     
-    if (self.demoExemple == JMDemoGIFAutomaticAnimationUsingImageViewImageAndSystemCache) {
+    if (self.demoExemple == JMDemoGIFAutomaticAnimationUsingImageViewImageLowMemoryPressure) {
         NSURL *url = [[NSBundle mainBundle] URLForResource:@"rock" withExtension:@"gif"];
         NSData *data = [NSData dataWithContentsOfURL:url];
+        self.carImageView1.memoryManagementOption = JMAnimatedImageViewMemoryLoadImageLowMemoryUsage;
         [self.carImageView1 reloadAnimationImagesFromGifData:data];
         self.carImageView1.animationType = JMAnimatedImageViewAnimationTypeAutomaticLinearWithoutTransition;
         self.carImageView1.animationDuration = 3;
@@ -40,6 +40,7 @@ - (void)viewDidLoad
         
         url = [[NSBundle mainBundle] URLForResource:@"Rotating_earth" withExtension:@"gif"];
         data = [NSData dataWithContentsOfURL:url];
+        self.carImageView2.memoryManagementOption = JMAnimatedImageViewMemoryLoadImageLowMemoryUsage;
         [self.carImageView2 reloadAnimationImagesFromGifData:data];
         self.carImageView2.animationType = JMAnimatedImageViewAnimationTypeAutomaticLinearWithoutTransition;
         self.carImageView2.animationDuration = 3;
@@ -47,20 +48,23 @@ - (void)viewDidLoad
         
         url = [[NSBundle mainBundle] URLForResource:@"nyan" withExtension:@"gif"];
         data = [NSData dataWithContentsOfURL:url];
+        self.carImageView3.memoryManagementOption = JMAnimatedImageViewMemoryLoadImageLowMemoryUsage;
         [self.carImageView3 reloadAnimationImagesFromGifData:data];
         self.carImageView3.animationType = JMAnimatedImageViewAnimationTypeAutomaticLinearWithoutTransition;
         [self.carImageView3 startAnimating];
         
-    } else if (self.demoExemple == JMDemoGIFInteractiveAnimationUsingImageViewImageAndSystemCache) {
-    
+    } else if (self.demoExemple == JMDemoGIFInteractiveAnimationUsingImageViewImageLowMemoryPressure) {
+        self.carImageView1.memoryManagementOption = JMAnimatedImageViewMemoryLoadImageLowMemoryUsage;
         [self.carImageView1 reloadAnimationImagesFromGifNamed:@"rock"];
         self.carImageView1.animationType = JMAnimatedImageViewAnimationTypeInteractive;
         [self.carImageView1 setInteractiveAnimation:YES];
 
+        self.carImageView2.memoryManagementOption = JMAnimatedImageViewMemoryLoadImageLowMemoryUsage;
         [self.carImageView2 reloadAnimationImagesFromGifNamed:@"Rotating_earth"];
         self.carImageView2.animationType = JMAnimatedImageViewAnimationTypeInteractive;
         [self.carImageView2 setInteractiveAnimation:YES];
 
+        self.carImageView3.memoryManagementOption = JMAnimatedImageViewMemoryLoadImageLowMemoryUsage;
         [self.carImageView3 reloadAnimationImagesFromGifNamed:@"nyan"];
         self.carImageView3.animationType = JMAnimatedImageViewAnimationTypeInteractive;
         [self.carImageView3 setInteractiveAnimation:YES];
diff --git a/JMAnimatedImageView/JMAnimatedImageView/JMFLViewController.xib b/JMAnimatedImageView/JMAnimatedImageView/JMFLViewController.xib
index dad070d..c8f82a9 100644
--- a/JMAnimatedImageView/JMAnimatedImageView/JMFLViewController.xib
+++ b/JMAnimatedImageView/JMAnimatedImageView/JMFLViewController.xib
@@ -17,15 +17,15 @@
             
             
             
-                
+                
                     
                     
                 
-                
+                
                     
                     
                 
-                
+                
                     
                     
                 
diff --git a/JMAnimatedImageView/JMAnimatedImageView/JMTableViewController.h b/JMAnimatedImageView/JMAnimatedImageView/JMTableViewController.h
index 0eac3a9..541e2a1 100644
--- a/JMAnimatedImageView/JMAnimatedImageView/JMTableViewController.h
+++ b/JMAnimatedImageView/JMAnimatedImageView/JMTableViewController.h
@@ -15,8 +15,8 @@ typedef NS_ENUM(NSUInteger, JMDemoType) {
     JMDemoAutoSwipeAnimationUsingJMAnimatedImageViewImageAndWithoutCache,
     JMDemoInteractiveAnimationUsingJMAnimatedImageViewImageAndWithoutCache,
     JMDemoCarouselUsingJMAnimatedImageViewImageAndWithoutCache,
-    JMDemoGIFAutomaticAnimationUsingImageViewImageAndSystemCache,
-    JMDemoGIFInteractiveAnimationUsingImageViewImageAndSystemCache
+    JMDemoGIFAutomaticAnimationUsingImageViewImageLowMemoryPressure,
+    JMDemoGIFInteractiveAnimationUsingImageViewImageLowMemoryPressure
 };
 
 @interface JMTableViewController : UITableViewController
diff --git a/JMAnimatedImageView/JMAnimatedImageView/JMTableViewController.m b/JMAnimatedImageView/JMAnimatedImageView/JMTableViewController.m
index 7de65b7..775d021 100644
--- a/JMAnimatedImageView/JMAnimatedImageView/JMTableViewController.m
+++ b/JMAnimatedImageView/JMAnimatedImageView/JMTableViewController.m
@@ -88,12 +88,12 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N
             cell.jmDetailsLabel.text = @"Swipe left / Right";
             break;
             
-        case JMDemoGIFAutomaticAnimationUsingImageViewImageAndSystemCache:
+        case JMDemoGIFAutomaticAnimationUsingImageViewImageLowMemoryPressure:
             cell.jmLabel.text = @"GIF ANIMATION : using JMAnimatedImageView (Low memory usage)";
             cell.jmDetailsLabel.text = @"Swipe left / Right";
             break;
             
-        case JMDemoGIFInteractiveAnimationUsingImageViewImageAndSystemCache:
+        case JMDemoGIFInteractiveAnimationUsingImageViewImageLowMemoryPressure:
             cell.jmLabel.text = @"GIF INTERACTION : using JMAnimatedImageView (Low memory usage)";
             cell.jmDetailsLabel.text = @"Swipe left / Right";
             break;
@@ -114,8 +114,8 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
 {
     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
     
-    if (indexPath.row == JMDemoGIFAutomaticAnimationUsingImageViewImageAndSystemCache ||
-        indexPath.row == JMDemoGIFInteractiveAnimationUsingImageViewImageAndSystemCache)
+    if (indexPath.row == JMDemoGIFAutomaticAnimationUsingImageViewImageLowMemoryPressure ||
+        indexPath.row == JMDemoGIFInteractiveAnimationUsingImageViewImageLowMemoryPressure)
     {
         JMFLViewController *vc = [JMFLViewController new];
         UIViewController *vcToPush = vc;
diff --git a/JMAnimatedImageView/JMAnimatedImageView/JMViewController.m b/JMAnimatedImageView/JMAnimatedImageView/JMViewController.m
index 8b065fe..189f908 100644
--- a/JMAnimatedImageView/JMAnimatedImageView/JMViewController.m
+++ b/JMAnimatedImageView/JMAnimatedImageView/JMViewController.m
@@ -8,7 +8,7 @@
 
 #import "JMViewController.h"
 #import "JMAnimatedImageView.h"
-#import "JMAnimatedImageView+JMGif.h"
+#import "JMAnimatedGifImageView.h"
 
 @interface JMViewController () 
 @property (weak, nonatomic) IBOutlet JMAnimatedImageView *carImageView;
@@ -116,22 +116,7 @@ - (void)viewDidLoad
             [self.carImageView reloadAnimationImages];
             [self.carImageView setInteractiveAnimation:YES];
             break;
-            
-        case JMDemoGIFAutomaticAnimationUsingImageViewImageAndSystemCache:
-            self.imageView.hidden = YES;
-            self.carImageView.hidden = NO;
-            self.carImageView.animationDelegate = self;
-            self.carImageView.animationDatasource = self;
-            self.carImageView.animationType = JMAnimatedImageViewAnimationTypeAutomaticLinearWithoutTransition;
-            [self.carImageView reloadAnimationImagesFromGifNamed:@"rock"];
-            [self.carImageView startAnimating];
-            break;
-            
-        case JMDemoGIFInteractiveAnimationUsingImageViewImageAndSystemCache:
-            self.imageView.hidden = YES;
-            self.carImageView.hidden = NO;
-            break;
-            
+                        
         default:
             break;
     }