@@ -45,6 +45,7 @@ static inline SDImageFormat SDImageFormatFromYYImageType(YYImageType type) {
45
45
@interface SDImageYYCoder ()
46
46
47
47
@property (nonatomic , strong ) YYImageDecoder *decoder;
48
+ @property (nonatomic , assign ) BOOL lazyDecode;
48
49
49
50
@end
50
51
@@ -190,7 +191,17 @@ - (instancetype)initIncrementalWithOptions:(SDImageCoderOptions *)options {
190
191
scale = 1 ;
191
192
}
192
193
}
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;
194
205
}
195
206
196
207
return self;
@@ -226,11 +237,17 @@ - (instancetype)initWithAnimatedImageData:(NSData *)data options:(SDImageCoderOp
226
237
scale = 1 ;
227
238
}
228
239
}
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;
229
246
YYImageDecoder *decoder = [YYImageDecoder decoderWithData: data scale: scale];
230
247
if (!decoder) {
231
248
return nil ;
232
249
}
233
- self. decoder = decoder;
250
+ _decoder = decoder;
234
251
}
235
252
return self;
236
253
}
@@ -248,7 +265,7 @@ - (NSUInteger)animatedImageLoopCount {
248
265
}
249
266
250
267
- (UIImage *)animatedImageFrameAtIndex : (NSUInteger )index {
251
- YYImageFrame *frame = [self .decoder frameAtIndex: index decodeForDisplay: NO ];
268
+ YYImageFrame *frame = [self .decoder frameAtIndex: index decodeForDisplay: ! self .lazyDecode ];
252
269
return frame.image ;
253
270
}
254
271
0 commit comments