From 44860a02fff0aafb47243f2b43cbab837abc4848 Mon Sep 17 00:00:00 2001 From: Horcrux Date: Fri, 11 Nov 2016 14:10:19 +0800 Subject: [PATCH] Fix ClipPath position with Text elements --- ios/Elements/RNSVGGroup.h | 1 + ios/Elements/RNSVGGroup.m | 7 +++++++ ios/Text/RNSVGText.m | 4 ++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ios/Elements/RNSVGGroup.h b/ios/Elements/RNSVGGroup.h index 1ef6a8f5..28a908f2 100644 --- a/ios/Elements/RNSVGGroup.h +++ b/ios/Elements/RNSVGGroup.h @@ -16,5 +16,6 @@ @interface RNSVGGroup : RNSVGPath - (void)pathRenderLayerTo:(CGContextRef)contex; +- (void)renderLayerToWithTransform:(CGContextRef)context transform:(CGAffineTransform)transform; @end diff --git a/ios/Elements/RNSVGGroup.m b/ios/Elements/RNSVGGroup.m index 18b434e5..a9452782 100644 --- a/ios/Elements/RNSVGGroup.m +++ b/ios/Elements/RNSVGGroup.m @@ -11,9 +11,16 @@ @implementation RNSVGGroup - (void)renderLayerTo:(CGContextRef)context +{ + [self renderLayerToWithTransform:context transform:CGAffineTransformIdentity]; +} + +- (void)renderLayerToWithTransform:(CGContextRef)context transform:(CGAffineTransform)transform { RNSVGSvgView* svg = [self getSvgView]; [self clip:context]; + + CGContextConcatCTM(context, transform); [self traverseSubviews:^(RNSVGNode *node) { if (node.responsible && !svg.responsible) { svg.responsible = YES; diff --git a/ios/Text/RNSVGText.m b/ios/Text/RNSVGText.m index da9c969e..4ef47b97 100644 --- a/ios/Text/RNSVGText.m +++ b/ios/Text/RNSVGText.m @@ -25,8 +25,8 @@ - (void)renderLayerTo:(CGContextRef)context { CGContextSaveGState(context); - CGContextConcatCTM(context, CGAffineTransformMakeTranslation([self getShift:context path:nil], 0)); - [super renderLayerTo:context]; + CGAffineTransform transform = CGAffineTransformMakeTranslation([self getShift:context path:nil], 0); + [super renderLayerToWithTransform:context transform:transform]; CGContextRestoreGState(context); }