Skip to content

Commit 0318580

Browse files
committed
fix: fix layer level.
1 parent 13bae93 commit 0318580

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

Source/SVGAPlayer.m

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,8 @@ - (void)draw {
138138
self.drawLayer.masksToBounds = true;
139139
NSMutableDictionary *tempHostLayers = [NSMutableDictionary dictionary];
140140
NSMutableArray *tempContentLayers = [NSMutableArray array];
141-
for (SVGAVideoSpriteEntity * sprite in self.videoItem.sprites) {
141+
142+
[self.videoItem.sprites enumerateObjectsUsingBlock:^(SVGAVideoSpriteEntity * _Nonnull sprite, NSUInteger idx, BOOL * _Nonnull stop) {
142143
UIImage *bitmap;
143144
if (sprite.imageKey != nil) {
144145
if (self.dynamicObjects[sprite.imageKey] != nil) {
@@ -153,14 +154,15 @@ - (void)draw {
153154
[tempContentLayers addObject:contentLayer];
154155
if ([sprite.imageKey hasSuffix:@".matte"]) {
155156
CALayer *hostLayer = [[CALayer alloc] init];
156-
hostLayer.frame = contentLayer.frame;
157157
hostLayer.mask = contentLayer;
158-
[self.drawLayer addSublayer:hostLayer];
159158
tempHostLayers[sprite.imageKey] = hostLayer;
160159
} else {
161160
if (sprite.matteKey && sprite.matteKey.length > 0) {
162161
CALayer *hostLayer = tempHostLayers[sprite.matteKey];
163162
[hostLayer addSublayer:contentLayer];
163+
if (![sprite.matteKey isEqualToString:self.videoItem.sprites[idx - 1].matteKey]) {
164+
[self.drawLayer addSublayer:hostLayer];
165+
}
164166
} else {
165167
[self.drawLayer addSublayer:contentLayer];
166168
}
@@ -184,7 +186,7 @@ - (void)draw {
184186
contentLayer.dynamicDrawingBlock = self.dynamicDrawings[sprite.imageKey];
185187
}
186188
}
187-
}
189+
}];
188190
_contentLayers = tempContentLayers;
189191

190192
[self.layer addSublayer:self.drawLayer];

Source/SVGAVectorLayer.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ - (void)drawFrame:(NSInteger)frame {
8585
return;
8686
}
8787
}
88-
[self.sublayers makeObjectsPerformSelector:@selector(removeFromSuperlayer)];
88+
while(self.sublayers.count) [self.sublayers.firstObject removeFromSuperlayer];
8989
for (NSDictionary *shape in frameItem.shapes) {
9090
if ([shape isKindOfClass:[NSDictionary class]]) {
9191
if ([shape[@"type"] isKindOfClass:[NSString class]]) {

0 commit comments

Comments
 (0)