Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从右到左关闭模态ViewController?_Ios_Objective C - Fatal编程技术网

Ios 如何从右到左关闭模态ViewController?

Ios 如何从右到左关闭模态ViewController?,ios,objective-c,Ios,Objective C,在Objective-C中,我想从右到左关闭模态ViewController 现在我可以在模态上从左向右移动。 但我不知道如何消除这种从左到右的模式VC,就像推屏转换一样 下面是从a-ViewController移动到b-ViewController的代码 bViewController *nextVC = [[bViewController alloc] initWithNibName:nil bundle:nil]; CATransition *transition = [CATransi

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

目标-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]; 
Swift 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)
斯威夫特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)

定义CATTransition并实现上述实现。这段代码可以使用DISCLISE进行屏幕向左和向右的转换。关键是要使动画为false。如果将“动画”(animated)设置为true,则“解除”的原始移动将被混淆

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

在Swift 4中,您可以使用以下代码。它对我有用

        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)

感谢您的回答。感谢您的回答。请编辑您的回答,而不是在注释中添加更多的代码行。若要提高回答的质量,请添加关于代码如何改进它们的解释。定义CATTransition并实现上述实现。这段代码可以使用DISCLISE进行屏幕向左和向右的转换。关键是要使动画为false。如果将“动画”(animated)设置为true,则“解除”的原始移动将被混淆。
        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)