0

我想在一个视图控制器在屏幕幻灯片,然后在某个时候滑出并回到呈现的ViewController。 我用这个代码从我MainViewController启动模式,然后将其关闭。dismissViewControllerAnimated不是动画的ViewController

为什么解雇滑动动画不工作?

// Present a React Component sliding from the right on top of current ViewController 
+ (void)presentSlidingFromRight:(UIViewController*)presented onViewController:(UIViewController*)presenterVC { 
    CATransition *transition = [[CATransition alloc] init]; 
    transition.duration = 1; 
    transition.type = kCATransitionPush; 
    transition.subtype = kCATransitionFromRight; 
    [presenterVC.view.window.layer addAnimation:transition forKey:kCATransition]; 
    [presenterVC presentViewController:presented animated:NO completion:nil]; 
} 

// Dismiss a React Component sliding to the right 
+ (void)dismissSlidingToRight:(UIViewController*)presented onViewController:(UIViewController*)presenterVC { 
    CATransition *transition = [[CATransition alloc] init]; 
    transition.duration = 3; 
    transition.type = kCATransitionPush; 
    transition.subtype = kCATransitionFromLeft; 
    [presenterVC.view.window.layer addAnimation:transition forKey:kCATransition]; 
    [presenterVC dismissViewControllerAnimated:NO completion:nil]; 
} 

回答

1

你能尝试修改此行:

[presenterVC dismissViewControllerAnimated:NO completion:nil]; 

这一个:

[presenterVC dismissViewControllerAnimated:YES completion:nil]; 

更新

确保你正在呼吁Main Thread

+0

你的静态功能,当我把它设置为YES,模态动画但是默认的动画(滑动底部快)。为什么忽略我的转换? – Herno

+0

@赫尔诺在解雇功能,你可以尝试改变过渡类型,使用淡出而不是推: 'transition.type = kCATransitionFade;' – zero

+0

感谢您的帮助。所以如果我在我的MainView控制器中运行代码,它运行良好。但是,因为我有这个静态类,我不知道它为什么不动画。我保持_​​presented,并提出控制器在varaibles供以后使用。这是相同的代码,但是当我在另一个类,是不是MainViewController使用它,它不工作。这有多奇怪? – Herno