@@ -19,8 +19,10 @@ @interface SVGAPlayer ()
1919@property (nonatomic , strong ) CALayer *drawLayer;
2020@property (nonatomic , strong ) CADisplayLink *displayLink;
2121@property (nonatomic , assign ) NSInteger currentFrame;
22- @property (nonatomic , copy ) NSDictionary *dynamicObjects;
23- @property (nonatomic , copy ) NSDictionary *dynamicTexts;
22+ @property (nonatomic , copy ) NSDictionary <NSString *, UIImage *> *dynamicObjects;
23+ @property (nonatomic , copy ) NSDictionary <NSString *, NSAttributedString *> *dynamicTexts;
24+ @property (nonatomic , copy ) NSDictionary <NSString *, SVGAPlayerDynamicDrawingBlock> *dynamicDrawings;
25+ @property (nonatomic , copy ) NSDictionary <NSString *, NSNumber *> *dynamicHiddens;
2426@property (nonatomic , assign ) int loopCount;
2527@property (nonatomic , assign ) NSRange currentRange;
2628@property (nonatomic , assign ) BOOL reversing;
@@ -137,6 +139,13 @@ - (void)draw {
137139 [contentLayer addSublayer: textLayer];
138140 contentLayer.textLayer = textLayer;
139141 }
142+ if (self.dynamicHiddens [sprite.imageKey] != nil &&
143+ [self .dynamicHiddens[sprite.imageKey] boolValue ] == YES ) {
144+ contentLayer.dynamicHidden = YES ;
145+ }
146+ if (self.dynamicDrawings [sprite.imageKey] != nil ) {
147+ contentLayer.dynamicDrawingBlock = self.dynamicDrawings [sprite.imageKey];
148+ }
140149 }
141150 }];
142151 [self .layer addSublayer: self .drawLayer];
@@ -344,8 +353,39 @@ - (void)setAttributedText:(NSAttributedString *)attributedText forKey:(NSString
344353 }
345354}
346355
356+ - (void )setDrawingBlock : (SVGAPlayerDynamicDrawingBlock)drawingBlock forKey : (NSString *)aKey {
357+ NSMutableDictionary *mutableDynamicDrawings = [self .dynamicDrawings mutableCopy ];
358+ [mutableDynamicDrawings setObject: drawingBlock forKey: aKey];
359+ self.dynamicDrawings = mutableDynamicDrawings;
360+ if (self.drawLayer .sublayers .count > 0 ) {
361+ for (SVGAContentLayer *layer in self.drawLayer .sublayers ) {
362+ if ([layer isKindOfClass: [SVGAContentLayer class ]] &&
363+ [layer.imageKey isEqualToString: aKey]) {
364+ layer.dynamicDrawingBlock = drawingBlock;
365+ }
366+ }
367+ }
368+ }
369+
370+ - (void )setHidden : (BOOL )hidden forKey : (NSString *)aKey {
371+ NSMutableDictionary *mutableDynamicHiddens = [self .dynamicHiddens mutableCopy ];
372+ [mutableDynamicHiddens setObject: @(hidden) forKey: aKey];
373+ self.dynamicHiddens = mutableDynamicHiddens;
374+ if (self.drawLayer .sublayers .count > 0 ) {
375+ for (SVGAContentLayer *layer in self.drawLayer .sublayers ) {
376+ if ([layer isKindOfClass: [SVGAContentLayer class ]] &&
377+ [layer.imageKey isEqualToString: aKey]) {
378+ layer.dynamicHidden = hidden;
379+ }
380+ }
381+ }
382+ }
383+
347384- (void )clearDynamicObjects {
348385 self.dynamicObjects = nil ;
386+ self.dynamicTexts = nil ;
387+ self.dynamicHiddens = nil ;
388+ self.dynamicDrawings = nil ;
349389}
350390
351391- (NSDictionary *)dynamicObjects {
@@ -362,4 +402,18 @@ - (NSDictionary *)dynamicTexts {
362402 return _dynamicTexts;
363403}
364404
405+ - (NSDictionary *)dynamicHiddens {
406+ if (_dynamicHiddens == nil ) {
407+ _dynamicHiddens = @{};
408+ }
409+ return _dynamicHiddens;
410+ }
411+
412+ - (NSDictionary <NSString *,SVGAPlayerDynamicDrawingBlock> *)dynamicDrawings {
413+ if (_dynamicDrawings == nil ) {
414+ _dynamicDrawings = @{};
415+ }
416+ return _dynamicDrawings;
417+ }
418+
365419@end
0 commit comments