簡體   English   中英

如何從右到左關閉模態ViewController?

[英]How to dismiss modal ViewController from right to left?

在Objective-C中,我想從右到左忽略模態ViewController。

現在我可以在模態上從左向右移動。 但我不知道如何從左到右解雇這個模態VC,就像推屏轉換一樣。

這是一個從a-ViewController移動到b-ViewController的代碼。

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] ;

Objective-C的

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]; 

斯威夫特5

let transition = CATransition()
transition.duration = 0.5
transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
transition.type = CATransitionType.push
transition.subtype = CATransitionSubtype.fromRight
self.view.window!.layer.add(transition, forKey: nil)
self.dismiss(animated: false, completion: nil)

在Swift 4中,您可以使用Bellow代碼。 它正在為我工​​作..

        let transition = CATransition()
        transition.duration = 0.5
        transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
        transition.type = kCATransitionPush
        transition.subtype = kCATransitionFromRight 
        self.view.window!.layer.add(transition, forKey: nil)
        self.dismiss(animated: false, completion: nil)
    -(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]; 
    }

定義CATransition並實現上述實現。 此代碼可以使用dismiss使屏幕過渡到左側和右側。 關鍵是要制作動畫假。 如果將動畫設置為true,則忽略原始的解散動作。

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

在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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM