ビューがUIViewControllerに埋め込まれているUINavigationControllerがあります。デバイスを回転させると、NavigationController はwillRotate
didRotate
イベントを完全に受け取りました。ただし、UINavigationController 内の現在表示されているビュー コントローラーの前にプッシュされた UIViewControllers は、回転イベントを受け取りません。
問題は次のとおりです。2番目のviewControllerがnavigationControllerに表示されていますが、デバイスを回転させると、ViewControllerは回転に応じてレイアウトを変更します。ビューコントローラーをポップして最初のビューコントローラーに戻ると、回転したビューの再レイアウトメソッドを呼び出さないため、最初のビューコントローラーは縦向きレイアウトに従って表示されます。
デフォルトの回転メソッドが通常どおり自動的に呼び出されるため、通常はすでに正しく動作しているため、回転変更のオブザーバーを追加したくありません...
この状況で何ができますか?
手動で willRotate 関数を呼び出して実行しましたが、これが良いとは思いません。
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
UIInterfaceOrientation io=[[UIApplication sharedApplication] statusBarOrientation];
[self willRotateToInterfaceOrientation:io duration:0.3];
for(int i=0;i<self.childViewControllers.count;i++){
[[self.childViewControllers objectAtIndex:i]willRotateToInterfaceOrientation:io duration:0.3];
}
}