美文网首页『ios』进阶
『ios』转场动画篇-present实践

『ios』转场动画篇-present实践

作者: butterflyer | 来源:发表于2018-09-16 11:23 被阅读29次
    1536737739532.jpg

    present跟push大同小异。需要注意下下面这个@protocol.

    UIViewControllerTransitioningDelegate
    - (nullable id <UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source;
    
    

    专门针对于present.返回自定义的转场协议。
    看下custompresentTransition里的内容

    - (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext {
        return 1;
    }
    
    - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {
        
        //1.获取动画的源控制器和目标控制器
        presentViewController *fromVC = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
        presentDViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
        UIView *container = [transitionContext containerView];
        UIView *fromView = fromVC.view;
        //    UIView *fromView = [transitionContext viewForKey:UITransitionContextFromViewKey];
        UIView *toView = [transitionContext viewForKey:UITransitionContextToViewKey];
        
        
        toView.frame = CGRectMake(fromView.frame.origin.x, CGRectGetMaxY(fromView.frame)/9.0f, fromView.frame.size.width, fromView.frame.size.height);
        toView.alpha = 0;
        
        [container addSubview:toView];
        
        NSTimeInterval transitionDuration = [self transitionDuration:transitionContext];
        [UIView animateWithDuration:transitionDuration delay:0 usingSpringWithDamping:0.6 initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
            toView.alpha = 1;
            toView.frame = [transitionContext finalFrameForViewController:toVC];
        } completion:^(BOOL finished) {
            BOOL wasCancelled = [transitionContext transitionWasCancelled];
            [transitionContext completeTransition:!wasCancelled];
        }];
        
    }
    
    

    demo地址(https://github.com/Butteryflyyer/XH_CustomTransitionl)

    ios自习室欢迎进入,一起学习一起进步。

    IMG_7291.JPG

    相关文章

      网友评论

        本文标题:『ios』转场动画篇-present实践

        本文链接:https://www.haomeiwen.com/subject/hzlagftx.html