Advertisement
Guest User

Untitled

a guest
Sep 18th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //
  2. //  UIImageView+PINRemoteImage.m
  3. //  Pods
  4. //
  5. //  Created by Garrett Moon on 8/17/14.
  6. //
  7. //
  8.  
  9. #import "PINImageView+PINRemoteImage.h"
  10. #import <objc/runtime.h>
  11.  
  12. static void * PinRemoteVoidKey = &PinRemoteVoidKey;
  13.  
  14. @interface WeakObjectContainer : NSObject
  15. @property (nonatomic, readonly, weak) id object;
  16. @end
  17.  
  18. @implementation WeakObjectContainer
  19. - (instancetype) initWithObject:(id)object
  20. {
  21.     if (!(self = [super init]))
  22.         return nil;
  23.    
  24.     _object = object;
  25.    
  26.     return self;
  27. }
  28. @end
  29.  
  30. @implementation PINImageView (PINRemoteImage)
  31.  
  32. - (id)weakObject {
  33.     return [objc_getAssociatedObject(self, PinRemoteVoidKey) object];
  34. }
  35.  
  36. - (void)setWeakObject:(id)object {
  37.     objc_setAssociatedObject(self, &PinRemoteVoidKey, [[WeakObjectContainer alloc] initWithObject:object], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  38. }
  39.  
  40. - (void)pin_setImageFromURL:(NSURL *)url placeholderImage:(PINImage *)placeholderImage
  41. {
  42.     [self setWeakObject:[self superview]];
  43.     [PINRemoteImageCategoryManager setImageOnView:self fromURL:url placeholderImage:placeholderImage];
  44. }
  45.  
  46. - (void)pin_setImageFromURL:(NSURL *)url completion:(PINRemoteImageManagerImageCompletion)completion
  47. {
  48.     [self setWeakObject:[self superview]];
  49.     [PINRemoteImageCategoryManager setImageOnView:self fromURL:url completion:completion];
  50. }
  51.  
  52. - (void)pin_setImageFromURL:(NSURL *)url placeholderImage:(PINImage *)placeholderImage completion:(PINRemoteImageManagerImageCompletion)completion
  53. {
  54.     [self setWeakObject:[self superview]];
  55.     [PINRemoteImageCategoryManager setImageOnView:self fromURL:url placeholderImage:placeholderImage completion:completion];
  56. }
  57.  
  58. - (void)pin_setImageFromURL:(NSURL *)url processorKey:(NSString *)processorKey processor:(PINRemoteImageManagerImageProcessor)processor
  59. {
  60.     [self setWeakObject:[self superview]];
  61.     [PINRemoteImageCategoryManager setImageOnView:self fromURL:url processorKey:processorKey processor:processor];
  62. }
  63.  
  64. - (void)pin_setImageFromURL:(NSURL *)url placeholderImage:(PINImage *)placeholderImage processorKey:(NSString *)processorKey processor:(PINRemoteImageManagerImageProcessor)processor
  65. {
  66.     [self setWeakObject:[self superview]];
  67.     [PINRemoteImageCategoryManager setImageOnView:self fromURL:url placeholderImage:placeholderImage processorKey:processorKey processor:processor];
  68. }
  69.  
  70. - (void)pin_setImageFromURL:(NSURL *)url processorKey:(NSString *)processorKey processor:(PINRemoteImageManagerImageProcessor)processor completion:(PINRemoteImageManagerImageCompletion)completion
  71. {
  72.     [self setWeakObject:[self superview]];
  73.     [PINRemoteImageCategoryManager setImageOnView:self fromURL:url processorKey:processorKey processor:processor completion:completion];
  74. }
  75.  
  76. - (void)pin_setImageFromURL:(NSURL *)url placeholderImage:(PINImage *)placeholderImage processorKey:(NSString *)processorKey processor:(PINRemoteImageManagerImageProcessor)processor completion:(PINRemoteImageManagerImageCompletion)completion
  77. {
  78.     [self setWeakObject:[self superview]];
  79.     [PINRemoteImageCategoryManager setImageOnView:self fromURLs:url?@[url]:nil placeholderImage:placeholderImage processorKey:processorKey processor:processor completion:completion];
  80. }
  81.  
  82. - (void)pin_setImageFromURLs:(NSArray <NSURL *> *)urls
  83. {
  84.     [self setWeakObject:[self superview]];
  85.     [PINRemoteImageCategoryManager setImageOnView:self fromURLs:urls];
  86. }
  87.  
  88. - (void)pin_setImageFromURLs:(NSArray <NSURL *> *)urls placeholderImage:(PINImage *)placeholderImage
  89. {
  90.     [self setWeakObject:[self superview]];
  91.     [PINRemoteImageCategoryManager setImageOnView:self fromURLs:urls placeholderImage:placeholderImage];
  92. }
  93.  
  94. - (void)pin_setImageFromURLs:(NSArray <NSURL *> *)urls placeholderImage:(PINImage *)placeholderImage completion:(PINRemoteImageManagerImageCompletion)completion
  95. {
  96.     [self setWeakObject:[self superview]];
  97.     [PINRemoteImageCategoryManager setImageOnView:self fromURLs:urls placeholderImage:placeholderImage completion:completion];
  98. }
  99.  
  100. - (void)pin_cancelImageDownload
  101. {
  102.     [PINRemoteImageCategoryManager cancelImageDownloadOnView:self];
  103. }
  104.  
  105. - (NSUUID *)pin_downloadImageOperationUUID
  106. {
  107.     return [PINRemoteImageCategoryManager downloadImageOperationUUIDOnView:self];
  108. }
  109.  
  110. - (void)pin_setDownloadImageOperationUUID:(NSUUID *)downloadImageOperationUUID
  111. {
  112.     [PINRemoteImageCategoryManager setDownloadImageOperationUUID:downloadImageOperationUUID onView:self];
  113. }
  114.  
  115. - (BOOL)pin_updateWithProgress
  116. {
  117.     return [PINRemoteImageCategoryManager updateWithProgressOnView:self];
  118. }
  119.  
  120. - (void)setPin_updateWithProgress:(BOOL)updateWithProgress
  121. {
  122.     [PINRemoteImageCategoryManager setUpdateWithProgressOnView:updateWithProgress onView:self];
  123. }
  124.  
  125. - (void)pin_setPlaceholderWithImage:(PINImage *)image
  126. {
  127.     self.image = image;
  128. }
  129.  
  130. - (void)pin_updateUIWithImage:(PINImage *)image animatedImage:(FLAnimatedImage *)animatedImage
  131. {
  132.  #if PIN_TARGET_IOS
  133.     if ([self weakObject] == nil){
  134.         return;
  135.     }
  136. #endif
  137.     if (image) {
  138.         self.image = image;
  139.  
  140. #if PIN_TARGET_IOS
  141.         [self setNeedsLayout];
  142. #elif PIN_TARGET_MAC
  143.         [self setNeedsLayout:YES];
  144. #endif
  145.     }
  146. }
  147.  
  148. - (void)pin_clearImages
  149. {
  150.     self.image = nil;
  151.    
  152. #if PIN_TARGET_IOS
  153.     [self setNeedsLayout];
  154. #elif PIN_TARGET_MAC
  155.     [self setNeedsLayout:YES];
  156. #endif
  157. }
  158.  
  159. - (BOOL)pin_ignoreGIFs
  160. {
  161.     return YES;
  162. }
  163.  
  164. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement