在iOS中,我如何在自定义动画(segue)期间延迟自动旋转

问题描述:

在iOS中(版本5很好),我有一个自定义动画来翻转和缩放从一个UIViewController转换到另一个的图像:在iOS中,我如何在自定义动画(segue)期间延迟自动旋转

TCFlipZoomSubviewSegue segue=[[TCFlipZoomSubviewSegue alloc] initWithIdentifier:@"SegueToMenuTable" source:self.iViewController destination:self.mViewController]; 
[segue perform]; 

,并在执行方法,我有:

[UIView animateWithDuration:3.75f 
         delay:0.0f 
        options:UIViewAnimationOptionAllowAnimatedContent 
       animations:^{ 
        self.subviewTransformView.layer.transform=transform; 
       } completion:^(BOOL finished) { 
        [destination.parentViewController.view bringSubviewToFront:destination.view]; 
       } 

这一切工作正常,但出现的种种问题(布局搞砸),如果我在动画过程中旋转设备。我想要的是动画在发生定位事件之前完成 - 这是iPhone中的标准行为 - 例如,在单击INBOX后立即旋转MAIL应用程序 - 完成幻灯片切换然后旋转。与股票应用程序等相同。那就是如果我使用标准的推动画等等会发生什么,但我有我自己的动画。

那么他们如何做到这一点?

如何防止(即延迟或阻止)方向更改,直到动画结束?我可以通过在shouldAutorotateToInterfaceOrientation中说NO来轻松地停止更改:当我进行动画制作时,但之后我需要它进行定位。我可以调用attemptRotationToDeviceOrientation,但肯定必须有更好的方法 - 该segue本身应该能够完成而不会被打断...

这是我的第一篇文章和任何帮助非常感谢。

我认为你提到的方式可能是你必须这么做的方式 - 也就是说,将NO返回到shouldAutorotateToInterfaceOrientation :,然后在动画完成时调用attemptRotationToDeviceOrientation。如果用户在动画进行过程中尝试旋转,您可能需要某种标志,因此您应该知道在动画结束时是否应该调用attemptRotationToDeviceOrientation。