@@ -31,12 +31,12 @@ - (instancetype)initWithNavigationControllerOperation:(UINavigationControllerOpe
31
31
}
32
32
33
33
- (NSTimeInterval )transitionDuration : (id <UIViewControllerContextTransitioning>)transitionContext {
34
- return 0.3 ;
34
+ return 0.25 ;
35
35
}
36
36
37
37
- (void )animateTransition : (id <UIViewControllerContextTransitioning>)transitionContext {
38
- UIViewController *fromViewController = [transitionContext viewControllerForKey: UITransitionContextFromViewControllerKey];
39
- UIViewController *toViewController = [transitionContext viewControllerForKey: UITransitionContextToViewControllerKey];
38
+ MRCViewController *fromViewController = [transitionContext viewControllerForKey: UITransitionContextFromViewControllerKey];
39
+ MRCViewController *toViewController = [transitionContext viewControllerForKey: UITransitionContextToViewControllerKey];
40
40
41
41
CGRect initialFrameForFromViewController = [transitionContext initialFrameForViewController: fromViewController];
42
42
CGRect finalFrameForFromViewController = [transitionContext finalFrameForViewController: fromViewController];
@@ -53,32 +53,84 @@ - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionCo
53
53
NSTimeInterval duration = [self transitionDuration: transitionContext];
54
54
55
55
if (self.operation == UINavigationControllerOperationPush) { // push
56
+ [[transitionContext containerView ] addSubview: fromViewController.snapshot];
57
+ fromViewController.view .hidden = YES ;
58
+
56
59
CGRect frame = [transitionContext finalFrameForViewController: toViewController];
57
60
toViewController.view .frame = CGRectOffset (frame, CGRectGetWidth (frame), 0 );
58
61
[[transitionContext containerView ] addSubview: toViewController.view];
59
62
60
63
[UIView animateWithDuration: duration
64
+ delay: 0.0
65
+ options: UIViewAnimationOptionCurveEaseOut
61
66
animations: ^{
62
- fromViewController.view .alpha = 0 ;
63
- // fromViewController.view.frame = CGRectInset(fromViewController.view.frame, 10, 10);
67
+ fromViewController.snapshot .alpha = 0.0 ;
64
68
toViewController.view .frame = CGRectOffset (toViewController.view .frame , -CGRectGetWidth (toViewController.view .frame ), 0 );
69
+ // toViewController.navigationController.navigationBar.frame = CGRectOffset(toViewController.navigationController.navigationBar.frame, -CGRectGetWidth(toViewController.navigationController.navigationBar.frame), 0);
65
70
}
66
71
completion: ^(BOOL finished) {
72
+ fromViewController.view .hidden = NO ;
73
+ [fromViewController.snapshot removeFromSuperview ];
67
74
[transitionContext completeTransition: YES ];
68
75
}];
69
76
} else if (self.operation == UINavigationControllerOperationPop) { // pop
77
+ // fromViewController.view.hidden = YES;
78
+ toViewController.view .hidden = YES ;
79
+
70
80
[[transitionContext containerView ] addSubview: toViewController.view];
71
- [[transitionContext containerView ] sendSubviewToBack: toViewController.view];
72
-
81
+ [[transitionContext containerView ] addSubview: toViewController.snapshot];
82
+ [[transitionContext containerView ] sendSubviewToBack: toViewController.snapshot];
83
+
84
+ toViewController.snapshot .frame = CGRectInset (toViewController.view .frame , 20 , 20 );
85
+
86
+ [fromViewController.view addSubview: fromViewController.snapshot];
87
+
88
+ // UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 250, SCREEN_WIDTH, 44)];
89
+ // view.backgroundColor = [UIColor blueColor];
90
+ // [fromViewController.view addSubview:view];
91
+ // [[transitionContext containerView] addSubview:fromViewController.snapshot];
92
+
93
+ fromViewController.navigationController .navigationBar .hidden = YES ;
94
+
95
+ // toViewController.snapshot.alpha = 0.0;
96
+
73
97
[UIView animateWithDuration: duration
98
+ delay: 0.0
99
+ options: UIViewAnimationOptionCurveLinear
74
100
animations: ^{
101
+ // fromViewController.navigationController.navigationBar.frame = CGRectOffset(fromViewController.navigationController.navigationBar.frame, CGRectGetWidth(fromViewController.view.frame), 0);
75
102
fromViewController.view .frame = CGRectOffset (fromViewController.view .frame , CGRectGetWidth (fromViewController.view .frame ), 0 );
76
- toViewController.view .alpha = 1 ;
77
- // toViewController.view.frame = [transitionContext finalFrameForViewController:toViewController];
103
+ // fromViewController.snapshot.frame = CGRectOffset(fromViewController.snapshot.frame, CGRectGetWidth(fromViewController.snapshot.frame), 0);
104
+
105
+ // fromViewController.snapshot.frame = CGRectOffset(fromViewController.snapshot.frame, 0, 0);
106
+ toViewController.snapshot .alpha = 1.0 ;
107
+ toViewController.snapshot .frame = [transitionContext finalFrameForViewController: toViewController];
78
108
}
79
109
completion: ^(BOOL finished) {
110
+ toViewController.navigationController .navigationBar .hidden = NO ;
111
+
112
+ fromViewController.view .hidden = NO ;
113
+ toViewController.view .hidden = NO ;
114
+
115
+ [fromViewController.snapshot removeFromSuperview ];
116
+ [toViewController.snapshot removeFromSuperview ];
117
+
118
+ // if (![transitionContext transitionWasCancelled]) {
119
+ // toViewController.navigationController.navigationBar.frame = CGRectOffset(toViewController.navigationController.navigationBar.frame, -CGRectGetWidth(toViewController.view.frame), 0);
120
+ // }
121
+
80
122
[transitionContext completeTransition: ![transitionContext transitionWasCancelled ]];
81
123
}];
124
+ // [UIView animateWithDuration:duration
125
+ // animations:^{
126
+ // // fromViewController.navigationController.navigationBar.frame = CGRectOffset(fromViewController.navigationController.navigationBar.frame, CGRectGetWidth(fromViewController.view.frame), 0);
127
+ // fromViewController.view.frame = CGRectOffset(fromViewController.view.frame, CGRectGetWidth(fromViewController.view.frame), 0);
128
+ // toViewController.view.alpha = 1;
129
+ // // toViewController.view.frame = [transitionContext finalFrameForViewController:toViewController];
130
+ // }
131
+ // completion:^(BOOL finished) {
132
+ // [transitionContext completeTransition:![transitionContext transitionWasCancelled]];
133
+ // }];
82
134
}
83
135
}
84
136
0 commit comments