在 iOS(版本 5 很好)中,我有一个自定义动画来翻转和缩放从一个 UIViewController 过渡到另一个 UIViewController 的图像:
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 中的标准行为 - 例如尝试在单击收件箱后立即旋转 MAIL 应用程序 - 它完成幻灯片转换然后旋转。Stocks 应用程序等也是如此。如果我使用标准的 Push 动画等,就会发生这种情况。但我有自己的动画要做。
那么他们是怎么做到的呢?
如何防止(即延迟或阻止)方向更改,直到我的动画完成?我可以通过在 shouldAutorotateToInterfaceOrientation: 中说 NO 来轻松停止更改:当我制作动画但之后我需要它来进行定向。我可以调用 attemptRotationToDeviceOrientation 但肯定有更好的方法 - segue 本身应该能够在不被中断的情况下完成。