2

UISplitViewControllerアプリケーションの rootView に設定されている があります。左のView Controllerで が呼び出されると、チェックを行い、次viewDidLoadを使用してモーダルView Controllerを提示します。

SiteConfiguration *config = [[SiteConfiguration alloc] initWithStyle:UITableViewStyleGrouped];
config.firstLoad = YES;
UINavigationController *configNav = [[UINavigationController alloc] initWithRootViewController:config];
if ([Utility isIpad]) {
    configNav.modalPresentationStyle = UIModalPresentationFormSheet;
    configNav.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [[AppDelegate instance].splitViewController presentModalViewController:configNav animated:YES];
} else {
    [self presentModalViewController:configNav animated:YES];
}

アプリの読み込み中に iPad が横向きモードの場合、modalView は正しくない向きで表示されます。

ここに画像の説明を入力

これを修正するために iPad を回転させることはできますが、なぜ間違って読み込まれるのでしょうか? viewControllershouldAutorotateToInterfaceOrientation:で YES を返しました。SiteConfiguration何が原因でしょうか?

4

2 に答える 2

3

モーダル コントローラーを表示する場所には注意してください。私は、いくつかのカスタム モーダル コントローラーを使用して、モーダル コントローラー (およびその影) の向きを設定した経験があります。

 - (void)viewDidLoad:(BOOL)animated 

常に期待どおりに動作するとは限りません。

presentModalViewController:configNav animated:YESコード ( ) を入れてください

 - (void)viewDidAppear:(BOOL)animated 

代わりは。(これは、サブビュー フレームを設定するコードや、シャドウ レイヤーやシャドウ プロパティなどのレイヤーの操作を行うコードでも同様に行います)。

私が知る限り、回転されたビューのサブビューには、回転後まで回転が見えない場合があります

 - (void)viewDidLoad:(BOOL)animated 
スレッド化の問題のため (メイン スレッドによって回転がサブビュー (およびモーダル コントローラー) に渡される前に、1 つのスレッドがサブビューまたはモーダル コントローラーのビューの描画を開始する場合があります)。私よりもスレッドの経験が豊富な人は、これについてより多くの光を当てることができるかもしれません.

于 2012-07-19T19:55:47.990 に答える
0

shouldAutorotateToInterfaceOrientation:実際にはインターフェースを回転させません。アプリはUIDeviceOrientationDidChangeNotification通知を受け取るとそれを行います。

-(void) viewDidAppear:(BOOL)animatedメソッドにデバイスの向きのチェックを追加してみてください。

インターフェイスのローテーションを強制するには、次のコードを使用します。

UIDeviceOrientation toInterfaceOrientation = [[UIDevice currentDevice] orientation];
[UIApplication sharedApplication].statusBarOrientation = toInterfaceOrientation;
于 2012-07-19T19:44:22.180 に答える