セグエ (モーダル) を使用して、あるビュー コントローラーから次のビュー コントローラーに移動しています。ただし、遷移が発生したときにアニメーションが関与しないように、カスタム セグエを使用しています。代わりに、ビュー コントローラー (ビュー) 内のサブビューに独自のアニメーションがあります。ここではすべて正常に動作します。しかし、提示されたView Controllerを使用してView Controllerに戻るとdismissModalViewControllerAnimated:
、小さな問題が発生します。以下は、宛先ビューコントローラーからメソッドを呼び出しているコードです。
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
[self dismissModalViewControllerAnimated:NO];
} completion:nil];
viewWillAppear
親View Controllerに次のコードがあります
-(void)viewWillAppear:(BOOL)animated{
ContainerView *containerView = (ContainerView *)[[[self.view subviews]objectAtIndex:0] viewWithTag:CONTAINER_TAG];
int i=0;
for (UIView *vw in containerView.subviews) {
[vw setFrame:[[containerView.initialFrameArray objectAtIndex:i] CGRectValue]];
i++;
}
}
これは、縦向きモードである限り、すべてのアニメーションが正常に機能します。他の向きの場合でもアニメーションは機能しますが、デバイス全体の向きが縦向きから現在の向きに変更されたかのように、ビュー全体がさらに回転します。親View Controller(ビュー)の向きが縦向きとして保存されているかのようです。がdismissModalViewControllerAnimated:
呼び出されると、デバイスが横向きの場合でも、ビュー全体が回転して再び横向きになります。
モーダル ビュー コントローラーを閉じる前に、親ビュー コントローラーの向き (格納されている) を横向きに変更する方法はありますか?
または、カスタム アニメーションの実装に何か問題がありますか?