mirror of
https://github.com/status-im/react-native.git
synced 2025-01-16 12:34:17 +00:00
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
24 lines
718 B
Objective-C
24 lines
718 B
Objective-C
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
@class RCTNativeAnimatedModule;
|
|
|
|
@interface RCTViewPropertyMapper : NSObject
|
|
|
|
@property (nonatomic, readonly) NSNumber *viewTag;
|
|
|
|
- (instancetype)initWithViewTag:(NSNumber *)viewTag
|
|
animationModule:(RCTNativeAnimatedModule *)animationModule NS_DESIGNATED_INITIALIZER;
|
|
|
|
- (void)updateViewWithDictionary:(NSDictionary<NSString *, NSObject *> *)updates;
|
|
|
|
@end
|