在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。