具有自定义过渡的模态ViewController =错误的动画

时间:2013-03-26 09:24:57

标签: uiviewcontroller modalviewcontroller presentmodalviewcontroller catransition

在我的应用程序中,几乎可以在任何地方打开视频。视频播放器是一个UIViewController子类,它包含一个MPMoviePlayerController,并显示在我的应用程序的rootViewController上。

我使用以下代码在我的应用程序中显示ViewController,并自定义转换为

// When the glitch occurs, the rootViewController still has a presentedViewController
if (self.rootViewController.presentedViewController)
     [self.rootViewController dismissViewControllerAnimated:NO completion:^{}];

CATransition* transition = [CATransition animation];
transition.duration = 0.3;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;

UIWindow* window = self.appDelegate.window;
[window.layer addAnimation:transition forKey:nil];
[self.rootViewController presentViewController:viewController animated:NO completion:^{}];

99%的时间这个工作正常,有所期望的结果,但有时,真的随机我得到一个非常奇怪的故障。视频播放器ViewController是可见的,我的应用程序的rootViewController从我的视频播放器顶部右侧滑入。

基本上,转换应用于rootViewController而不是视频ViewController。此时无法在我的应用中打开视频,因为rootViewController在视频播放器ViewController的顶部进行从右到左的过渡。

如何防止这种故障发生?我试图从rootViewController中解除任何活动的presentViewController,然后再呈现一个新的但没有解决问题。

提前致谢。

0 个答案:

没有答案