Fix nested SVGs in iOS #1437 (#1948)

PR making the nested svgs parse the references. Originally authored by @tiredBlueWhale.

Co-authored-by: Luca Meyer <lmeyer@Lucas-MacBook-Pro.local>
This commit is contained in:
Wojciech Lewicki
2023-01-03 20:19:25 +01:00
committed by GitHub
parent c1808c0978
commit 1bac96f979
2 changed files with 11 additions and 22 deletions
+8 -16
View File
@@ -253,6 +253,9 @@ using namespace facebook::react;
- (void)drawToContext:(CGContextRef)context withRect:(CGRect)rect
{
rendered = true;
_clipPaths = nil;
_templates = nil;
_painters = nil;
self.initialCTM = CGContextGetCTM(context);
self.invInitialCTM = CGAffineTransformInvert(self.initialCTM);
if (self.align) {
@@ -264,10 +267,14 @@ using namespace facebook::react;
_viewBoxTransform = CGAffineTransformIdentity;
_invviewBoxTransform = CGAffineTransformIdentity;
}
for (RNSVGView *node in self.subviews) {
if ([node isKindOfClass:[RNSVGNode class]]) {
RNSVGNode *svg = (RNSVGNode *)node;
if (svg.responsible && !self.responsible) {
self.responsible = YES;
}
[svg parseReference];
[svg renderTo:context rect:rect];
} else {
[node drawRect:rect];
@@ -281,24 +288,9 @@ using namespace facebook::react;
if ([parent isKindOfClass:[RNSVGNode class]]) {
return;
}
rendered = true;
_clipPaths = nil;
_templates = nil;
_painters = nil;
_boundingBox = rect;
CGContextRef context = UIGraphicsGetCurrentContext();
for (RNSVGPlatformView *node in self.subviews) {
if ([node isKindOfClass:[RNSVGNode class]]) {
RNSVGNode *svg = (RNSVGNode *)node;
if (svg.responsible && !self.responsible) {
self.responsible = YES;
}
[svg parseReference];
}
}
[self drawToContext:context withRect:rect];
}