Permalink
Browse files

Support static values in NativeAnimated transforms on iOS

Summary:
Support static values (non-animated) in transform config like Android already does.

**Test plan**
Tested in UIExplorer native animated example by adding a transform with a static value and comparing with JS.
Closes #10664

Differential Revision: D4109515

fbshipit-source-id: 2d7de17d51d6df835c569fd45d2de8fc170bf928
  • Loading branch information...
janicduplessis authored and Facebook Github Bot committed Nov 1, 2016
1 parent 2b49edd commit cdd2d791c90c25881f32e9d9dd9f3159061aba06
Showing with 31 additions and 31 deletions.
  1. +31 −31 Libraries/NativeAnimation/Nodes/RCTTransformAnimatedNode.m
@@ -38,47 +38,47 @@ - (void)performUpdate
NSArray<NSDictionary *> *transformConfigs = self.config[@"transforms"];
for (NSDictionary *transformConfig in transformConfigs) {
NSString *type = transformConfig[@"type"];
- // TODO: Support static transform values.
- if (![type isEqualToString: @"animated"]) {
- continue;
- }
-
- NSNumber *nodeTag = transformConfig[@"nodeTag"];
-
- RCTAnimatedNode *node = self.parentNodes[nodeTag];
- if (node.hasUpdated && [node isKindOfClass:[RCTValueAnimatedNode class]]) {
+ NSString *property = transformConfig[@"property"];
+
+ CGFloat value;
+ if ([type isEqualToString: @"animated"]) {
+ NSNumber *nodeTag = transformConfig[@"nodeTag"];
+ RCTAnimatedNode *node = self.parentNodes[nodeTag];
+ if (!node.hasUpdated || ![node isKindOfClass:[RCTValueAnimatedNode class]]) {
+ continue;
+ }
RCTValueAnimatedNode *parentNode = (RCTValueAnimatedNode *)node;
+ value = parentNode.value;
+ } else {
+ value = [transformConfig[@"value"] floatValue];
+ }
- NSString *property = transformConfig[@"property"];
- CGFloat value = parentNode.value;
-
- if ([property isEqualToString:@"scale"]) {
- transform = CATransform3DScale(transform, value, value, 1);
+ if ([property isEqualToString:@"scale"]) {
+ transform = CATransform3DScale(transform, value, value, 1);
- } else if ([property isEqualToString:@"scaleX"]) {
- transform = CATransform3DScale(transform, value, 1, 1);
+ } else if ([property isEqualToString:@"scaleX"]) {
+ transform = CATransform3DScale(transform, value, 1, 1);
- } else if ([property isEqualToString:@"scaleY"]) {
- transform = CATransform3DScale(transform, 1, value, 1);
+ } else if ([property isEqualToString:@"scaleY"]) {
+ transform = CATransform3DScale(transform, 1, value, 1);
- } else if ([property isEqualToString:@"translateX"]) {
- transform = CATransform3DTranslate(transform, value, 0, 0);
+ } else if ([property isEqualToString:@"translateX"]) {
+ transform = CATransform3DTranslate(transform, value, 0, 0);
- } else if ([property isEqualToString:@"translateY"]) {
- transform = CATransform3DTranslate(transform, 0, value, 0);
+ } else if ([property isEqualToString:@"translateY"]) {
+ transform = CATransform3DTranslate(transform, 0, value, 0);
- } else if ([property isEqualToString:@"rotate"]) {
- transform = CATransform3DRotate(transform, value, 0, 0, 1);
+ } else if ([property isEqualToString:@"rotate"]) {
+ transform = CATransform3DRotate(transform, value, 0, 0, 1);
- } else if ([property isEqualToString:@"rotateX"]) {
- transform = CATransform3DRotate(transform, value, 1, 0, 0);
+ } else if ([property isEqualToString:@"rotateX"]) {
+ transform = CATransform3DRotate(transform, value, 1, 0, 0);
- } else if ([property isEqualToString:@"rotateY"]) {
- transform = CATransform3DRotate(transform, value, 0, 1, 0);
+ } else if ([property isEqualToString:@"rotateY"]) {
+ transform = CATransform3DRotate(transform, value, 0, 1, 0);
- } else if ([property isEqualToString:@"perspective"]) {
- transform.m34 = 1.0 / -value;
- }
+ } else if ([property isEqualToString:@"perspective"]) {
+ transform.m34 = 1.0 / -value;
}
}

0 comments on commit cdd2d79

Please sign in to comment.