2016-02-29 4 views
3

В Objective-C я хочу удалить модальный ViewController справа налево.Как отклонить модальный ViewController справа налево?

Теперь я могу перемещаться слева направо по модальному. Но я не знаю, как отклонить этот модальный VC слева направо, как переход на экранный экран.

Вот код, который перемещается из aViewController в bViewController.

bViewController *nextVC = [[bViewController alloc] initWithNibName:nil bundle:nil]; 

    CATransition *transition = [CATransition animation]; 
    transition.duration = 0.5; 
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 
    transition.type = kCATransitionPush ; 
    [transition setSubtype:kCATransitionFromLeft]; 
    [[nextVC.view layer] addAnimation:transition forKey:@"TransitionTest"]; 
    //[self presentViewController:nextVC animated:YES completion:nil]; 
    //if it's possible, I want to use upside's cord.(don't addSubView) but I don't know how to do it) 
    [self.view addSubview:nextVC.view] ; 

ответ

2
CATransition *transition = [CATransition animation]; 
transition.duration = 0.4; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
transition.type = kCATransitionPush; 
transition.subtype = kCATransitionFromRight; 
[self.view.window.layer addAnimation:transition forKey:nil]; 
[self dismissViewControllerAnimated:NO completion:nil]; 
+0

Благодарим вас за ответ. – bao

2
-(void) dismiss { 
     CATransition *transition = [CATransition animation]; 
     transition.duration = 0.5; 
     transition.timingFunction = 
     [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 
     transition.type = kCATransitionMoveIn; 
     transition.subtype = kCATransitionFromRight; 

     UIView *containerView = self.view.window; 
     [containerView.layer addAnimation:transition forKey:nil]; 

     [self dismissModalViewControllerAnimated:NO]; 
    } 
+0

Благодарим за ответ. – bao

0

В Swift 3

let transition = CATransition() 
transition.duration = 0.5 
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 
transition.type = kCATransitionPush 
transition.subtype = kCATransitionFromRight 
view.layer.add(transition, forKey: "rightToLeftTransition") 
dismiss(animated: true, completion: nil) 
1

Определить CATransition и осуществить реализацию выше. Этот код может сделать переходы экрана влево и вправо с помощью увольнения. Дело в том, чтобы сделать анимированную ложь. Если вы установите анимированное значение true, исходное перемещение отклонено.

transition.duration = 0.5 
    transition.type = kCATransitionPush 
    transition.subtype = kCATransitionFromLeft 
    view.window!.layer.add(transition, forKey: kCATransition) 
    dismiss(animated: false, completion: nil) 
+0

Измените свой ответ, а не добавьте больше строк кода в комментарии. – yacc

+0

Чтобы улучшить качество ответа, добавьте объяснение того, как ваш код улучшает их. – toonice

+0

Определите CATransition и выполните описанную выше реализацию. Этот код может сделать переходы экрана влево и вправо с помощью увольнения. Дело в том, чтобы сделать анимированную ложь. Если вы установите анимированное значение true, исходное перемещение отклонено. – howmanylife

Смежные вопросы