blob: 46b87b1d3053868d8eeaebb57bc4ea8fedeec9c1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
//
// ConnectionAnimatedTransition.m
// SmartDeviceLink-iOS
//
// Created by Joel Fischer on 2/18/15.
// Copyright (c) 2015 smartdevicelink. All rights reserved.
//
#import "ConnectionAnimatedTransition.h"
static CGFloat const ChildViewPadding = 16;
static CGFloat const DampingFactor = 0.8;
static CGFloat const InitialSpringVelocity = 0.6;
@implementation ConnectionAnimatedTransition
- (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext {
return 0.4;
}
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {
UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
BOOL goingRight = ([transitionContext initialFrameForViewController:toViewController].origin.x < [transitionContext finalFrameForViewController:toViewController].origin.x);
CGFloat travelDistance = [transitionContext containerView].bounds.size.width + ChildViewPadding;
CGAffineTransform travel = CGAffineTransformMakeTranslation((goingRight ? travelDistance : -travelDistance), 0);
[[transitionContext containerView] addSubview:toViewController.view];
toViewController.view.alpha = 0;
toViewController.view.transform = CGAffineTransformInvert(travel);
[UIView animateWithDuration:[self transitionDuration:transitionContext] delay:0 usingSpringWithDamping:DampingFactor initialSpringVelocity:InitialSpringVelocity options:kNilOptions animations:^{
fromViewController.view.transform = travel;
fromViewController.view.alpha = 0;
toViewController.view.transform = [transitionContext targetTransform];
toViewController.view.alpha = 1;
} completion:^(BOOL finished) {
fromViewController.view.transform = [transitionContext targetTransform];
[transitionContext completeTransition:![transitionContext transitionWasCancelled]];
}];
}
@end
|