eb96b7fabc
Summary: This diff addresses the issues raised by kmagiera in https://github.com/facebook/react-native/pull/7884. Transforms should be applied in the order they are defined, just like in `processTransform.js`. A scale applied before a translation, for instance, should give a different result than a translation applied before a scale. We leverage CATransform3D to do the heavy lifting. A concatenated transform is passed all the way to `RCTViewPropertyMapper`. It is compared with the transform currently applied to the view, and if different, applied. The same approach is used for opacity. I think it makes the most sense to do this diffing in `RCTViewPropertyMapper`, as opposed to creating and cleaning up an `_updatedPropsDictionary` each frame in `RCTTransformAnimatedNode` and `RCTStyleAnimatedNode`. The node should keep its full value; applying a minimal set of altered props is an optimization. The higher up this optimization is implemented, the more assumptions it makes. e.g. that there will only ever be a sing Closes https://github.com/facebook/react-native/pull/9050 Differential Revision: D3658139 fbshipit-source-id: ad6286762ef734084cbdf83c9bd9241190302d34 |
||
---|---|---|
.. | ||
Nodes | ||
RCTAnimation.xcodeproj | ||
RCTAnimationUtils.h | ||
RCTAnimationUtils.m | ||
RCTNativeAnimatedModule.h | ||
RCTNativeAnimatedModule.m | ||
RCTViewPropertyMapper.h | ||
RCTViewPropertyMapper.m |