IOS圖像8之IOS7.0之後UIViewController自定義轉場動畫

動畫效果如下:


-(NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext{

    return 1.0;

}

-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{

    UIViewController * viewfrom = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];

    UIViewController * viewto = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];

    UIView *mtransitionContext = [transitionContext containerView];

    if (self.flag) {

        [mtransitionContext addSubview:viewfrom.view];

        [mtransitionContext addSubview:viewto.view];

        viewto.view.frame = CGRectMake(-320, 0, 320, 568);

        [UIView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^(){

            viewto.view.frame = CGRectMake(-160, 0, 320, 568);

        } completion:^(BOOL finished){

            [transitionContext completeTransition:YES];

            BOOL canceled = [transitionContext transitionWasCancelled];

            [transitionContext completeTransition:!canceled];

            if (!canceled)

            {

                [[UIApplication sharedApplication].keyWindow addSubview: viewfrom.view];

//                [[UIApplication sharedApplication].keyWindow exchangeSubviewAtIndex:0 withSubviewAtIndex:1];

                

                

            }

        }];

    }else{

        

        [mtransitionContext addSubview:viewto.view];

        [mtransitionContext addSubview:viewfrom.view];

        [UIView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^(){

            viewfrom.view.frame = CGRectMake(0, 0, 160, 568);

        } completion:^(BOOL finished){

            [transitionContext completeTransition:YES];

        }];

    }    

}


發佈了138 篇原創文章 · 獲贊 5 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章