diff --git a/MMLayershots/SFPSDWriter+MMLayershots.m b/MMLayershots/SFPSDWriter+MMLayershots.m index 5ccfaff..8088f9d 100644 --- a/MMLayershots/SFPSDWriter+MMLayershots.m +++ b/MMLayershots/SFPSDWriter+MMLayershots.m @@ -20,16 +20,16 @@ - (void)addImagesForLayer:(CALayer *)layer renderedToRootLayer:(CALayer *)rootLa if (layer.hiddenBeforeHidingSublayers == NO) { layer.hidden = NO; - if (layer.sublayers.count>0 && self.currentGroupDepth 0) { // add self - UIImage *image = [rootLayer imageRepresentation]; + UIImage *image = [layer imageRepresentation]; // Compute layer name NSString *layerName = [self computeNameForLayer:layer]; [self addLayerWithCGImage:image.CGImage andName:[layerName stringByAppendingString:@"-Content"] andOpacity:1.0 - andOffset:CGPointZero]; + andOffset:[layer convertPoint:CGPointZero toLayer:nil]]; // hide own layer visuals while rendering children NSMutableDictionary *layerProperties = [NSMutableDictionary new]; @@ -48,8 +48,14 @@ - (void)addImagesForLayer:(CALayer *)layer renderedToRootLayer:(CALayer *)rootLa } // create layer group - [self incrementCurrentGroupDepth]; - [self openGroupLayerWithName:layerName]; + BOOL newGroupAdded = NO; + if (self.currentGroupDepth0) { - // reshow sublayers before taking a snapshot - [self showLayersInSubtree:layer]; - } + // Base case NSString *layerName = [self computeNameForLayer:layer]; - [self addLayerWithCGImage:[rootLayer imageRepresentation].CGImage + [self addLayerWithCGImage:[layer imageRepresentation].CGImage andName:layerName andOpacity:1.0 - andOffset:CGPointZero]; + andOffset:[layer convertPoint:CGPointZero toLayer:nil]]; } layer.hidden = YES;