mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-24 04:16:00 +08:00
RCTAnimation & RCTLayoutAnimation were decoupled from RCTUIManager
Reviewed By: javache Differential Revision: D5351726 fbshipit-source-id: f13e5cd47483f2d5f9b194c10ae3fb6e99e08d84
This commit is contained in:
committed by
Facebook Github Bot
parent
e7c1cf5b7d
commit
6312d67bcb
74
React/Modules/RCTLayoutAnimationGroup.m
Normal file
74
React/Modules/RCTLayoutAnimationGroup.m
Normal file
@@ -0,0 +1,74 @@
|
||||
/**
|
||||
* 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 "RCTLayoutAnimationGroup.h"
|
||||
|
||||
#import "RCTLayoutAnimation.h"
|
||||
#import "RCTConvert.h"
|
||||
|
||||
@implementation RCTLayoutAnimationGroup
|
||||
|
||||
- (instancetype)initWithCreatingLayoutAnimation:(RCTLayoutAnimation *)creatingLayoutAnimation
|
||||
updatingLayoutAnimation:(RCTLayoutAnimation *)updatingLayoutAnimation
|
||||
deletingLayoutAnimation:(RCTLayoutAnimation *)deletingLayoutAnimation
|
||||
callback:(RCTResponseSenderBlock)callback
|
||||
{
|
||||
if (self = [super init]) {
|
||||
_creatingLayoutAnimation = creatingLayoutAnimation;
|
||||
_updatingLayoutAnimation = updatingLayoutAnimation;
|
||||
_deletingLayoutAnimation = deletingLayoutAnimation;
|
||||
_callback = callback;
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithConfig:(NSDictionary *)config
|
||||
callback:(RCTResponseSenderBlock)callback
|
||||
{
|
||||
if (!config) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
if (self = [super init]) {
|
||||
NSTimeInterval duration = [RCTConvert NSTimeInterval:config[@"duration"]];
|
||||
|
||||
if (duration > 0.0 && duration < 0.01) {
|
||||
RCTLogError(@"RCTLayoutAnimationGroup expects timings to be in ms, not seconds.");
|
||||
duration = duration * 1000.0;
|
||||
}
|
||||
|
||||
_creatingLayoutAnimation = [[RCTLayoutAnimation alloc] initWithDuration:duration config:config[@"create"]];
|
||||
_updatingLayoutAnimation = [[RCTLayoutAnimation alloc] initWithDuration:duration config:config[@"update"]];
|
||||
_deletingLayoutAnimation = [[RCTLayoutAnimation alloc] initWithDuration:duration config:config[@"delete"]];
|
||||
_callback = callback;
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (BOOL)isEqual:(RCTLayoutAnimationGroup *)layoutAnimation
|
||||
{
|
||||
RCTLayoutAnimation *creatingLayoutAnimation = layoutAnimation.creatingLayoutAnimation;
|
||||
RCTLayoutAnimation *updatingLayoutAnimation = layoutAnimation.updatingLayoutAnimation;
|
||||
RCTLayoutAnimation *deletingLayoutAnimation = layoutAnimation.deletingLayoutAnimation;
|
||||
|
||||
return
|
||||
(_creatingLayoutAnimation == creatingLayoutAnimation || [_creatingLayoutAnimation isEqual:creatingLayoutAnimation]) &&
|
||||
(_updatingLayoutAnimation == updatingLayoutAnimation || [_updatingLayoutAnimation isEqual:updatingLayoutAnimation]) &&
|
||||
(_deletingLayoutAnimation == deletingLayoutAnimation || [_deletingLayoutAnimation isEqual:deletingLayoutAnimation]);
|
||||
}
|
||||
|
||||
- (NSString *)description
|
||||
{
|
||||
return [NSString stringWithFormat:@"<%@: %p; creatingLayoutAnimation: %@; updatingLayoutAnimation: %@; deletingLayoutAnimation: %@>",
|
||||
NSStringFromClass([self class]), self, [_creatingLayoutAnimation description], [_updatingLayoutAnimation description], [_deletingLayoutAnimation description]];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user