多くのViewcontrollerをホストするUIViewcontrollerがあります。それとそのサブビューに自動回転を設定しました。アプリが読み込まれると正常に動作します。私が抱えている問題は、最初の読み込みプロセス中に、アプリがいくつかのファイルをローカルに接続してダウンロードする必要があることです。このロード中に、ユーザーがiPadを回転させると、UIViewControllerが正しく回転しません。私はフラグを設定し、自動回転する必要がありますが、それでも機能しません。
PS:私はこれらの4つの方向を許可しています:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait ||
interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown ||
interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
ロードが完了すると、動作は正しくなり、適切に回転します。これは、これらの内部VCの一部がデータをロードしているためである可能性があると考えました。説明させてください。bigViewControllerは他のすべてのVCをホストし(彼をBigDaddyと呼びましょう)、BigdaddyのViewdidloadで(議論のために)他に3つありますViewControllers:Busta、Skeezix、およびローレンス。私もです:
[[Busta alloc] initWithNibName:@"Busta" bundle:nil];
-viewDidLoad
これにより、Bustaのが呼び出されるので、次のようにして、その非同期のファイル読み込みセクションを作成しました。
dispatch_async(dispatch_get_main_queue(), ^{
});
これらの変更は、非同期ディスパッチの前にロードプロセスに5秒かかるという意味で少し役立ちました(そして、それらの秒でiPadの傾きが回転イベントを引き起こし、ビュー全体が消えます。今、私はそれらの5を取得しました秒から1.2秒まで。私の質問は、問題の解決策はありますか?それは機能しませんか?アプリを4方向に回転させ、データの読み込み中に回転の変化に応答することは可能ですか?