为什么UIKit在自定义转换期间将UIViewController的UIView帧重置为"全屏"?

rjs*_*ing 10 uiview ios7 uikit-transitions

我正在使用自定义转换在- presentViewController:animated:completion:调用时将视图控制器2/3滑出屏幕,并在dismissViewControllerAnimated:completion:调用时再次将其向后滑动.

我还使用UIPercentDrivenInteractiveTransition附加到a UIScreenEdgePanGestureRecognizer来滑动视图控制器.

一切正常,除非在致电dismissViewControllerAnimated:completion:之前,之前:

- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext
Run Code Online (Sandbox Code Playgroud)

被称为视图控制器的框架滑出屏幕被设置为:

(0 0; 320 568)
Run Code Online (Sandbox Code Playgroud)

导致它在动画运行之前暂时"闪烁",并从屏幕上的2/3滑回到全屏.

通过在View Controller上继承UIView,我可以在-setFrame其中设置一个断点,显示方法:

[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:animation:]
Run Code Online (Sandbox Code Playgroud)

呼吁-setFrame(0 0; 320 568).

它为什么这样做?如何防止它在动画开始前设置框架?