dismissModalViewController with transition: left to right

后端 未结 3 1241
夕颜
夕颜 2020-12-08 05:17

I was using a nice method to dismiss my modal view controller:

[self dismissModalViewControllerWithTransition:2];

which makes a slide trans

3条回答
  •  执笔经年
    2020-12-08 05:50

    I have accepted the answer from Safecase, but I would like to publish my final solution here:

    1) To present a modal view controller with a from right to left transition I have written following method:

    -(void) presentModalView:(UIViewController *)controller {
        CATransition *transition = [CATransition animation];
        transition.duration = 0.35;
        transition.timingFunction =
        [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
        transition.type = kCATransitionMoveIn;
        transition.subtype = kCATransitionFromRight;
    
        // NSLog(@"%s: self.view.window=%@", _func_, self.view.window);
        UIView *containerView = self.view.window;
        [containerView.layer addAnimation:transition forKey:nil];
        [self presentModalViewController:controller animated:NO];
    }
    

    2) To dismiss a modal view with an slide transition left to right:

    -(void) dismissMe {
        CATransition *transition = [CATransition animation];
        transition.duration = 0.35;
        transition.timingFunction =
        [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
        transition.type = kCATransitionMoveIn;
        transition.subtype = kCATransitionFromLeft;
    
        // NSLog(@"%s: controller.view.window=%@", _func_, controller.view.window);
        UIView *containerView = self.view.window;
        [containerView.layer addAnimation:transition forKey:nil];
    
        [self dismissModalViewControllerAnimated:NO];
    }
    

    Thanks guys!

提交回复
热议问题