Newer
Older
XinYang_IOS / XYSW / ZZWTool / HSLeftPresentAnimation.m
@zhangfeng zhangfeng on 7 Dec 2023 2 KB 1.8.0
//
//  HSLeftPresentAnimation.m
//  HSPresentTransitionDemo
//
//  Created by hejianyuan on 2017/5/6.
//  Copyright © 2017年 hejianyuan. All rights reserved.
//

#import "HSLeftPresentAnimation.h"

@implementation HSLeftPresentAnimation

- (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext{
    return 0.75f;
}

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{
    
    UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
    
    UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
    
    UIView* toView = nil;
    UIView* fromView = nil;
    UIView* transView = nil;
    
    if ([transitionContext respondsToSelector:@selector(viewForKey:)]) {
        fromView = [transitionContext viewForKey:UITransitionContextFromViewKey];
        toView = [transitionContext viewForKey:UITransitionContextToViewKey];
    } else {
        fromView = fromViewController.view;
        toView = toViewController.view;
    }
    
    if (_isPresent) {
        transView = toView;
        [[transitionContext containerView] addSubview:toView];
        
    }else {
        transView = fromView;
        [[transitionContext containerView] insertSubview:toView belowSubview:fromView];
    }
    
    CGFloat width = [UIScreen mainScreen].bounds.size.width;
    CGFloat height = [UIScreen mainScreen].bounds.size.height;
    
    //从上往下推
    transView.frame = CGRectMake( 0,_isPresent ?-height:0, width, height);
    
    [UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
        transView.frame = CGRectMake(0, _isPresent ?0:-height, width, height);
    } completion:^(BOOL finished) {
        [transitionContext completeTransition:!transitionContext.transitionWasCancelled];
    }];
    
    
    //从右往左推
//    transView.frame = CGRectMake(_isPresent ?width :0, 0, width, height);
//
//    [UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
//        transView.frame = CGRectMake(_isPresent ?0 :width, 0, width, height);
//    } completion:^(BOOL finished) {
//         [transitionContext completeTransition:!transitionContext.transitionWasCancelled];
//    }];
    
}

@end