From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001
From: 单军华
Date: Wed, 11 Jul 2018 10:47:42 +0800
Subject: [PATCH] 首次上传

---
 screendisplay/Pods/SDWebImage/SDWebImage/UIButton+WebCache.m |  181 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 181 insertions(+), 0 deletions(-)

diff --git a/screendisplay/Pods/SDWebImage/SDWebImage/UIButton+WebCache.m b/screendisplay/Pods/SDWebImage/SDWebImage/UIButton+WebCache.m
new file mode 100644
index 0000000..8cdadb6
--- /dev/null
+++ b/screendisplay/Pods/SDWebImage/SDWebImage/UIButton+WebCache.m
@@ -0,0 +1,181 @@
+/*
+ * This file is part of the SDWebImage package.
+ * (c) Olivier Poitrey <rs@dailymotion.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+#import "UIButton+WebCache.h"
+
+#if SD_UIKIT
+
+#import "objc/runtime.h"
+#import "UIView+WebCacheOperation.h"
+#import "UIView+WebCache.h"
+
+static char imageURLStorageKey;
+
+typedef NSMutableDictionary<NSString *, NSURL *> SDStateImageURLDictionary;
+
+static inline NSString * imageURLKeyForState(UIControlState state) {
+    return [NSString stringWithFormat:@"image_%lu", (unsigned long)state];
+}
+
+static inline NSString * backgroundImageURLKeyForState(UIControlState state) {
+    return [NSString stringWithFormat:@"backgroundImage_%lu", (unsigned long)state];
+}
+
+static inline NSString * imageOperationKeyForState(UIControlState state) {
+    return [NSString stringWithFormat:@"UIButtonImageOperation%lu", (unsigned long)state];
+}
+
+static inline NSString * backgroundImageOperationKeyForState(UIControlState state) {
+    return [NSString stringWithFormat:@"UIButtonBackgroundImageOperation%lu", (unsigned long)state];
+}
+
+@implementation UIButton (WebCache)
+
+#pragma mark - Image
+
+- (nullable NSURL *)sd_currentImageURL {
+    NSURL *url = self.sd_imageURLStorage[imageURLKeyForState(self.state)];
+
+    if (!url) {
+        url = self.sd_imageURLStorage[imageURLKeyForState(UIControlStateNormal)];
+    }
+
+    return url;
+}
+
+- (nullable NSURL *)sd_imageURLForState:(UIControlState)state {
+    return self.sd_imageURLStorage[imageURLKeyForState(state)];
+}
+
+- (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state {
+    [self sd_setImageWithURL:url forState:state placeholderImage:nil options:0 completed:nil];
+}
+
+- (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder {
+    [self sd_setImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:nil];
+}
+
+- (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options {
+    [self sd_setImageWithURL:url forState:state placeholderImage:placeholder options:options completed:nil];
+}
+
+- (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state completed:(nullable SDExternalCompletionBlock)completedBlock {
+    [self sd_setImageWithURL:url forState:state placeholderImage:nil options:0 completed:completedBlock];
+}
+
+- (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock {
+    [self sd_setImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:completedBlock];
+}
+
+- (void)sd_setImageWithURL:(nullable NSURL *)url
+                  forState:(UIControlState)state
+          placeholderImage:(nullable UIImage *)placeholder
+                   options:(SDWebImageOptions)options
+                 completed:(nullable SDExternalCompletionBlock)completedBlock {
+    if (!url) {
+        [self.sd_imageURLStorage removeObjectForKey:imageURLKeyForState(state)];
+    } else {
+        self.sd_imageURLStorage[imageURLKeyForState(state)] = url;
+    }
+    
+    __weak typeof(self)weakSelf = self;
+    [self sd_internalSetImageWithURL:url
+                    placeholderImage:placeholder
+                             options:options
+                        operationKey:imageOperationKeyForState(state)
+                       setImageBlock:^(UIImage *image, NSData *imageData) {
+                           [weakSelf setImage:image forState:state];
+                       }
+                            progress:nil
+                           completed:completedBlock];
+}
+
+#pragma mark - Background Image
+
+- (nullable NSURL *)sd_currentBackgroundImageURL {
+    NSURL *url = self.sd_imageURLStorage[backgroundImageURLKeyForState(self.state)];
+    
+    if (!url) {
+        url = self.sd_imageURLStorage[backgroundImageURLKeyForState(UIControlStateNormal)];
+    }
+    
+    return url;
+}
+
+- (nullable NSURL *)sd_backgroundImageURLForState:(UIControlState)state {
+    return self.sd_imageURLStorage[backgroundImageURLKeyForState(state)];
+}
+
+- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state {
+    [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:nil options:0 completed:nil];
+}
+
+- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder {
+    [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:nil];
+}
+
+- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options {
+    [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:placeholder options:options completed:nil];
+}
+
+- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state completed:(nullable SDExternalCompletionBlock)completedBlock {
+    [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:nil options:0 completed:completedBlock];
+}
+
+- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock {
+    [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:completedBlock];
+}
+
+- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url
+                            forState:(UIControlState)state
+                    placeholderImage:(nullable UIImage *)placeholder
+                             options:(SDWebImageOptions)options
+                           completed:(nullable SDExternalCompletionBlock)completedBlock {
+    if (!url) {
+        [self.sd_imageURLStorage removeObjectForKey:backgroundImageURLKeyForState(state)];
+    } else {
+        self.sd_imageURLStorage[backgroundImageURLKeyForState(state)] = url;
+    }
+    
+    __weak typeof(self)weakSelf = self;
+    [self sd_internalSetImageWithURL:url
+                    placeholderImage:placeholder
+                             options:options
+                        operationKey:backgroundImageOperationKeyForState(state)
+                       setImageBlock:^(UIImage *image, NSData *imageData) {
+                           [weakSelf setBackgroundImage:image forState:state];
+                       }
+                            progress:nil
+                           completed:completedBlock];
+}
+
+#pragma mark - Cancel
+
+- (void)sd_cancelImageLoadForState:(UIControlState)state {
+    [self sd_cancelImageLoadOperationWithKey:imageOperationKeyForState(state)];
+}
+
+- (void)sd_cancelBackgroundImageLoadForState:(UIControlState)state {
+    [self sd_cancelImageLoadOperationWithKey:backgroundImageOperationKeyForState(state)];
+}
+
+#pragma mark - Private
+
+- (SDStateImageURLDictionary *)sd_imageURLStorage {
+    SDStateImageURLDictionary *storage = objc_getAssociatedObject(self, &imageURLStorageKey);
+    if (!storage) {
+        storage = [NSMutableDictionary dictionary];
+        objc_setAssociatedObject(self, &imageURLStorageKey, storage, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+    }
+
+    return storage;
+}
+
+@end
+
+#endif

--
Gitblit v1.8.0