From 90dc3329d1973fda691e357cf4523d5c7c67fa1d Mon Sep 17 00:00:00 2001
From: 杨锴 <841720330@qq.com>
Date: 星期二, 11 三月 2025 12:23:53 +0800
Subject: [PATCH] fix bug

---
 Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m |   73 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 1 deletions(-)

diff --git a/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m b/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m
index 7e73367..193652d 100644
--- a/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m
+++ b/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m
@@ -15,6 +15,70 @@
 #import "SDInternalMacros.h"
 #import "objc/runtime.h"
 
+// A wrapper to implements the transformer on animated image, like tint color
+@interface SDAnimatedImageFrameProvider : NSObject <SDAnimatedImageProvider>
+@property (nonatomic, strong) id<SDAnimatedImageProvider> provider;
+@property (nonatomic, strong) id<SDImageTransformer> transformer;
+@end
+
+@implementation SDAnimatedImageFrameProvider
+
+- (instancetype)initWithProvider:(id<SDAnimatedImageProvider>)provider transformer:(id<SDImageTransformer>)transformer {
+    self = [super init];
+    if (self) {
+        _provider = provider;
+        _transformer = transformer;
+    }
+    return self;
+}
+
+- (NSUInteger)hash {
+    NSUInteger prime = 31;
+    NSUInteger result = 1;
+    NSUInteger providerHash = self.provider.hash;
+    NSUInteger transformerHash = self.transformer.transformerKey.hash;
+    result = prime * result + providerHash;
+    result = prime * result + transformerHash;
+    return result;
+}
+
+- (BOOL)isEqual:(id)object {
+    if (nil == object) {
+      return NO;
+    }
+    if (self == object) {
+      return YES;
+    }
+    if (![object isKindOfClass:[self class]]) {
+      return NO;
+    }
+    return self.provider == [object provider]
+    && [self.transformer.transformerKey isEqualToString:[object transformer].transformerKey];
+}
+
+- (NSData *)animatedImageData {
+    return self.provider.animatedImageData;
+}
+
+- (NSUInteger)animatedImageFrameCount {
+    return self.provider.animatedImageFrameCount;
+}
+
+- (NSUInteger)animatedImageLoopCount {
+    return self.provider.animatedImageLoopCount;
+}
+
+- (NSTimeInterval)animatedImageDurationAtIndex:(NSUInteger)index {
+    return [self.provider animatedImageDurationAtIndex:index];
+}
+
+- (UIImage *)animatedImageFrameAtIndex:(NSUInteger)index {
+    UIImage *frame = [self.provider animatedImageFrameAtIndex:index];
+    return [self.transformer transformedImageWithImage:frame forKey:@""];
+}
+
+@end
+
 @interface UIImageView () <CALayerDelegate>
 @end
 
@@ -139,7 +203,14 @@
                 provider = (id<SDAnimatedImage>)image;
             }
             // Create animated player
-            self.player = [SDAnimatedImagePlayer playerWithProvider:provider];
+            if (self.animationTransformer) {
+                // Check if post-transform animation available
+                provider = [[SDAnimatedImageFrameProvider alloc] initWithProvider:provider transformer:self.animationTransformer];
+                self.player = [SDAnimatedImagePlayer playerWithProvider:provider];
+            } else {
+                // Normal animation without post-transform
+                self.player = [SDAnimatedImagePlayer playerWithProvider:provider];
+            }
         } else {
             // Update Frame Count
             self.player.totalFrameCount = [(id<SDAnimatedImage>)image animatedImageFrameCount];

--
Gitblit v1.7.1