Tabster/Classes/CrossfadeAnimationController.m
/* |
Copyright (C) 2018 Apple Inc. All Rights Reserved. |
See LICENSE.txt for this sample’s licensing information |
Abstract: |
Animator between the two view controllers by performing a simple cross-fade. |
*/ |
#import "CrossfadeAnimationController.h" |
@implementation CrossfadeAnimationController |
- (id)init |
{ |
if (self = [super init]) |
{ |
_duration = 1.0f; // Default duration. |
} |
return self; |
} |
- (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext |
{ |
return self.duration; |
} |
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext |
{ |
UIViewController *fromVC = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; |
UIViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; |
UIView *toView = toVC.view; |
UIView *fromView = fromVC.view; |
[self animateTransition:transitionContext fromVC:fromVC toVC:toVC fromView:fromView toView:toView]; |
} |
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext fromVC:(UIViewController *)fromVC toVC:(UIViewController *)toVC fromView:(UIView *)fromView toView:(UIView *)toView |
{ |
// Add the toView to the container. |
UIView *containerView = [transitionContext containerView]; |
[containerView addSubview:toView]; |
[containerView sendSubviewToBack:toView]; |
// Do the cross-fade transition. |
NSTimeInterval duration = [self transitionDuration:transitionContext]; |
[UIView animateWithDuration:duration animations:^{ |
fromView.alpha = 0.0; |
} completion:^(BOOL finished) { |
if ([transitionContext transitionWasCancelled]) |
{ |
fromView.alpha = 1.0; |
} |
else |
{ |
// Reset from- view to its original state. |
[fromView removeFromSuperview]; |
fromView.alpha = 1.0; |
} |
[transitionContext completeTransition:![transitionContext transitionWasCancelled]]; |
}]; |
} |
@end |
Copyright © 2018 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2018-02-15