animationControllerForPresentedController和animateTransition之间的自定义过渡animation未知延迟

我的目标是在第一个视图控制器中启动stream畅的animation,并在第二个视图控制器中结束。

我正在尝试使用符合UIViewControllerAnimatedTransitioningUIViewControllerTransitioningDelegate协议的对象的过渡animation。 我在故事板中设置了两个视图控制器(VC),并将它们与segue(默认显示)连接起来。 我也在第一个VC中做了一个放松的inheritance方法,并且在第二个VC中为它设置了一个button。

我有一个奇怪的问题。 我的对象有方法

 func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? { self.presenting = true NSLog("start") return self } func animateTransition(transitionContext: UIViewControllerContextTransitioning) { if presenting { NSLog("Animation Push") transitionPush(transitionContext) } else { NSLog("Animation Pop") transitionPop(transitionContext) } } 

我有两种不同的animation方法,从第一个VC到第二个,第二个到第一个VC。 当我激活segue时, animationControllerForPresentedControlleranimateTransition方法之间有非常奇怪的延迟。 有时可能是1秒左右,我的整个过渡animation必须是1秒加上这个意外的延迟太大了。 这里是一个日志:

 2015-02-08 19:52:33.528 MyApp[1318:119598] start 2015-02-08 19:52:33.979 MyApp[1318:119598] Animation Push 

我不知道为什么这个延迟发生,如果有办法删除或减less它? 我试图检查,如果这可能是我的代码,但我没有find任何certificate。 随意要求更多的信息。

我有同样的问题。 你可能不会触发主线程(presentViewController调用)的animation。

这解决了我的问题(Objective-C代码):

 dispatch_async(dispatch_get_main_queue(), ^{ [self presentViewController:viewControllerToPresent animated:YES completion:nil]; }); 

我在这里find解决scheme(解决方法),作者 – tamas.zahola

 [self presentViewController:myViewController animated:YES completion:nil]; dispatch_async(dispatch_get_main_queue(), ^{}); // <--- this line