[AnimationExperimental] Fixed CATransaction completion block invoke immediately
Summary: [CATransaction Class Reference](https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/CATransaction_class/index.html) In Tasks > Getting and Setting Completion Block Objects > Discussion: The completion block object that is guaranteed to be called (on the main thread) as soon as all animations subsequently added by this transaction group have completed (or have been removed.) If no animations are added before the current transaction group is committed (or the completion block is set to a different value,) the block will be invoked immediately. Closes https://github.com/facebook/react-native/pull/1400 Github Author: Shuangzuan <shuangzuan.he@icloud.com> Test Plan: Imported from GitHub, without a `Test Plan:` line.
This commit is contained in:
parent
bd081d84a7
commit
5793f5c4c4
|
@ -235,7 +235,6 @@ RCT_EXPORT_METHOD(startAnimation:(NSNumber *)reactTag
|
||||||
@try {
|
@try {
|
||||||
[view.layer setValue:toValue forKey:keypath];
|
[view.layer setValue:toValue forKey:keypath];
|
||||||
NSString *animationKey = [@"RCT" stringByAppendingString:RCTJSONStringify(@{@"tag": animationTag, @"key": keypath}, nil)];
|
NSString *animationKey = [@"RCT" stringByAppendingString:RCTJSONStringify(@{@"tag": animationTag, @"key": keypath}, nil)];
|
||||||
[view.layer addAnimation:animation forKey:animationKey];
|
|
||||||
if (!completionBlockSet) {
|
if (!completionBlockSet) {
|
||||||
strongSelf->_callbackRegistry[animationTag] = callback;
|
strongSelf->_callbackRegistry[animationTag] = callback;
|
||||||
[CATransaction setCompletionBlock:^{
|
[CATransaction setCompletionBlock:^{
|
||||||
|
@ -247,6 +246,7 @@ RCT_EXPORT_METHOD(startAnimation:(NSNumber *)reactTag
|
||||||
}];
|
}];
|
||||||
completionBlockSet = YES;
|
completionBlockSet = YES;
|
||||||
}
|
}
|
||||||
|
[view.layer addAnimation:animation forKey:animationKey];
|
||||||
}
|
}
|
||||||
@catch (NSException *exception) {
|
@catch (NSException *exception) {
|
||||||
return RCTInvalidAnimationProp(strongSelf->_callbackRegistry, animationTag, keypath, toValue);
|
return RCTInvalidAnimationProp(strongSelf->_callbackRegistry, animationTag, keypath, toValue);
|
||||||
|
|
Loading…
Reference in New Issue