Permalink
Browse files

Fix setAnimatedNodeValue in Native Animated on iOS

Summary:
`setAnimatedNodeValue` currently does not update views if there is no animation currently running. This simply updates the view immediately instead of relying on the animation loop. Extracted it out in a function to be able to use it for native `Animated.event` too.

**Test plan**
Tested this in an app using native driven animations with `NavigationCardStackPanResponder` that makes use of `setValue` to update `Animated.Values` during the back gesture.
Closes #10643

Differential Revision: D4106346

fbshipit-source-id: 7c639e03ded87058354340f1179f8b75be423e84
  • Loading branch information...
1 parent 3ac3749 commit 34c7e7610cadec47204750977e17fc3baf2ee800 @janicduplessis janicduplessis committed with Facebook Github Bot Oct 31, 2016
Showing with 10 additions and 0 deletions.
  1. +10 −0 Libraries/NativeAnimation/RCTNativeAnimatedModule.m
@@ -183,6 +183,10 @@ - (dispatch_queue_t)methodQueue
RCTValueAnimatedNode *valueNode = (RCTValueAnimatedNode *)node;
valueNode.value = value.floatValue;
[valueNode setNeedsUpdate];
+
+ [self updateViewsProps];
+
+ [valueNode cleanupAnimationUpdate];
}
RCT_EXPORT_METHOD(setAnimatedNodeOffset:(nonnull NSNumber *)nodeTag
@@ -265,6 +269,12 @@ - (void)animatedNode:(RCTValueAnimatedNode *)node didUpdateValue:(CGFloat)value
body:@{@"tag": node.nodeTag, @"value": @(value)}];
}
+- (void)updateViewsProps
+{
+ for (RCTPropsAnimatedNode *propsNode in _propAnimationNodes) {
+ [propsNode updateNodeIfNecessary];
+ }
+}
#pragma mark -- Animation Loop

0 comments on commit 34c7e76

Please sign in to comment.