Skip to content

Commit ab9417e

Browse files
committed
Update the lazyDecode support for YYImage
1 parent 65942ac commit ab9417e

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

SDWebImageYYPlugin/Classes/YYImage/YYImageBridge/SDImageYYCoder.m

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ static inline SDImageFormat SDImageFormatFromYYImageType(YYImageType type) {
4545
@interface SDImageYYCoder ()
4646

4747
@property (nonatomic, strong) YYImageDecoder *decoder;
48+
@property (nonatomic, assign) BOOL lazyDecode;
4849

4950
@end
5051

@@ -190,7 +191,17 @@ - (instancetype)initIncrementalWithOptions:(SDImageCoderOptions *)options {
190191
scale = 1;
191192
}
192193
}
193-
self.decoder = [[YYImageDecoder alloc] initWithScale:scale];
194+
BOOL lazyDecode = NO; // Defaults NO for animated image coder
195+
NSNumber *lazyDecodeValue = options[SDImageCoderDecodeUseLazyDecoding];
196+
if (lazyDecodeValue != nil) {
197+
lazyDecode = lazyDecodeValue.boolValue;
198+
}
199+
_lazyDecode = lazyDecode;
200+
YYImageDecoder *decoder = [[YYImageDecoder alloc] initWithScale:scale];
201+
if (!decoder) {
202+
return nil;
203+
}
204+
_decoder = decoder;
194205
}
195206

196207
return self;
@@ -226,11 +237,17 @@ - (instancetype)initWithAnimatedImageData:(NSData *)data options:(SDImageCoderOp
226237
scale = 1;
227238
}
228239
}
240+
BOOL lazyDecode = NO; // Defaults NO for animated image coder
241+
NSNumber *lazyDecodeValue = options[SDImageCoderDecodeUseLazyDecoding];
242+
if (lazyDecodeValue != nil) {
243+
lazyDecode = lazyDecodeValue.boolValue;
244+
}
245+
_lazyDecode = lazyDecode;
229246
YYImageDecoder *decoder = [YYImageDecoder decoderWithData:data scale:scale];
230247
if (!decoder) {
231248
return nil;
232249
}
233-
self.decoder = decoder;
250+
_decoder = decoder;
234251
}
235252
return self;
236253
}
@@ -248,7 +265,7 @@ - (NSUInteger)animatedImageLoopCount {
248265
}
249266

250267
- (UIImage *)animatedImageFrameAtIndex:(NSUInteger)index {
251-
YYImageFrame *frame = [self.decoder frameAtIndex:index decodeForDisplay:NO];
268+
YYImageFrame *frame = [self.decoder frameAtIndex:index decodeForDisplay:!self.lazyDecode];
252269
return frame.image;
253270
}
254271

0 commit comments

Comments
 (0)