2016-02-29 10 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

在夫特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

相關問題