Browse Source

added interpolation and startDelay for animations

yogevbd 6 years ago
parent
commit
0355a61a3b

+ 1
- 1
lib/ios/RNNModalAnimation.m View File

29
 	[_screenTransition.topBar setupInitialTransitionForView:toViewController.navigationController.navigationBar];
29
 	[_screenTransition.topBar setupInitialTransitionForView:toViewController.navigationController.navigationBar];
30
 	
30
 	
31
 	
31
 	
32
-	[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
32
+	[UIView animateWithDuration:[self transitionDuration:transitionContext] delay:self.screenTransition.content.startDelay options:self.screenTransition.content.interpolation animations:^{
33
 		[_screenTransition.content completeTransitionForView:toViewController.view];
33
 		[_screenTransition.content completeTransitionForView:toViewController.view];
34
 		[_screenTransition.topBar completeTransitionForView:toViewController.navigationController.navigationBar];
34
 		[_screenTransition.topBar completeTransitionForView:toViewController.navigationController.navigationBar];
35
 	} completion:^(BOOL finished) {
35
 	} completion:^(BOOL finished) {

+ 4
- 2
lib/ios/RNNPushAnimation.m View File

10
 }
10
 }
11
 
11
 
12
 - (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext {
12
 - (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext {
13
-	return 0.5;
13
+	return self.screenTransition.content.duration;
14
 }
14
 }
15
 
15
 
16
 - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {
16
 - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {
20
 	
20
 	
21
 	[self.screenTransition.content setupInitialTransitionForView:toViewController.view];
21
 	[self.screenTransition.content setupInitialTransitionForView:toViewController.view];
22
 	[self.screenTransition.topBar setupInitialTransitionForView:toViewController.navigationController.navigationBar];
22
 	[self.screenTransition.topBar setupInitialTransitionForView:toViewController.navigationController.navigationBar];
23
+	[self.screenTransition.bottomTabs setupInitialTransitionForView:toViewController.tabBarController.tabBar];
23
 	
24
 	
24
 	
25
 	
25
-	[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
26
+	[UIView animateWithDuration:[self transitionDuration:transitionContext] delay:self.screenTransition.content.startDelay options:self.screenTransition.content.interpolation animations:^{
26
 		[self.screenTransition.content completeTransitionForView:toViewController.view];
27
 		[self.screenTransition.content completeTransitionForView:toViewController.view];
27
 		[self.screenTransition.topBar completeTransitionForView:toViewController.navigationController.navigationBar];
28
 		[self.screenTransition.topBar completeTransitionForView:toViewController.navigationController.navigationBar];
29
+		[self.screenTransition.bottomTabs completeTransitionForView:toViewController.tabBarController.tabBar];
28
 	} completion:^(BOOL finished) {
30
 	} completion:^(BOOL finished) {
29
 		[transitionContext completeTransition:![transitionContext transitionWasCancelled]];
31
 		[transitionContext completeTransition:![transitionContext transitionWasCancelled]];
30
 	}];
32
 	}];

+ 1
- 0
lib/ios/RNNTransitionStateHolder.h View File

18
 @property (nonatomic) double endY;
18
 @property (nonatomic) double endY;
19
 @property (nonatomic) double startX;
19
 @property (nonatomic) double startX;
20
 @property (nonatomic) double endX;
20
 @property (nonatomic) double endX;
21
+@property (nonatomic) UIViewAnimationOptions interpolation;
21
 
22
 
22
 - (instancetype)initWithTransition:(NSDictionary*)transition;
23
 - (instancetype)initWithTransition:(NSDictionary*)transition;
23
 
24
 

+ 12
- 0
lib/ios/RNNTransitionStateHolder.m View File

25
 	self.fromId = [transition objectForKey:@"fromId"];
25
 	self.fromId = [transition objectForKey:@"fromId"];
26
 	self.toId = [transition objectForKey:@"toId"];
26
 	self.toId = [transition objectForKey:@"toId"];
27
 	self.isSharedElementTransition = [[transition objectForKey:@"type"] isEqualToString:@"sharedElement"];
27
 	self.isSharedElementTransition = [[transition objectForKey:@"type"] isEqualToString:@"sharedElement"];
28
+	self.interpolation = [self animationOptionsFromString:transition[@"interpolation"]];
29
+	
28
 	
30
 	
29
 	return self;
31
 	return self;
30
 }
32
 }
31
 
33
 
34
+- (UIViewAnimationOptions)animationOptionsFromString:(NSString*)interpolationString {
35
+	if ([interpolationString isEqualToString:@"accelerate"]) {
36
+		return UIViewAnimationOptionCurveEaseIn;
37
+	} else if ([interpolationString isEqualToString:@"decelerate"]) {
38
+		return UIViewAnimationOptionCurveEaseOut;
39
+	}
40
+	
41
+	return UIViewAnimationOptionCurveEaseInOut;
42
+}
43
+
32
 - (void)setupInitialTransitionForView:(UIView*)view {
44
 - (void)setupInitialTransitionForView:(UIView*)view {
33
 	_initialFrame = view.frame;
45
 	_initialFrame = view.frame;
34
 	view.alpha = self.startAlpha;
46
 	view.alpha = self.startAlpha;