diff --git a/ios/Elements/RNSVGDefs.m b/ios/Elements/RNSVGDefs.m index 068b56e7..93ebdd5e 100644 --- a/ios/Elements/RNSVGDefs.m +++ b/ios/Elements/RNSVGDefs.m @@ -13,11 +13,10 @@ - (void)renderTo:(CGContextRef)context { - for (RNSVGNode *node in self.subviews) { - if ([node isKindOfClass:[RNSVGNode class]]) { - [node saveDefinition]; - } - } + [self traverseSubviews:^(RNSVGNode *node) { + [node saveDefinition]; + return YES; + }]; } - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event diff --git a/ios/Elements/RNSVGGroup.m b/ios/Elements/RNSVGGroup.m index 4352eb22..b6ff3872 100644 --- a/ios/Elements/RNSVGGroup.m +++ b/ios/Elements/RNSVGGroup.m @@ -99,16 +99,5 @@ }]; } -- (void)traverseSubviews:(BOOL (^)(RNSVGNode *node))block -{ - for (RNSVGNode *node in self.subviews) { - if ([node isKindOfClass:[RNSVGNode class]]) { - if (!block(node)) { - break; - } - } - } -} - @end diff --git a/ios/RNSVGNode.h b/ios/RNSVGNode.h index fe521687..eec91939 100644 --- a/ios/RNSVGNode.h +++ b/ios/RNSVGNode.h @@ -78,4 +78,6 @@ - (void)endTransparencyLayer:(CGContextRef)context; +- (void)traverseSubviews:(BOOL (^)(RNSVGNode *node))block; + @end diff --git a/ios/RNSVGNode.m b/ios/RNSVGNode.m index 9eea3616..a719123c 100644 --- a/ios/RNSVGNode.m +++ b/ios/RNSVGNode.m @@ -191,6 +191,17 @@ // abstract } +- (void)traverseSubviews:(BOOL (^)(RNSVGNode *node))block +{ + for (RNSVGNode *node in self.subviews) { + if ([node isKindOfClass:[RNSVGNode class]]) { + if (!block(node)) { + break; + } + } + } +} + - (void)resetProperties { // abstract