5

背景が透明なビューを表示するために、この質問の解決策に従っています。私が抱えている問題は、モーダルビューコントローラが表示されると、基になるビューが回転しなくなることです。

たとえば、Aが私のビューコントローラである場合、Bは私のモーダルビューです。問題は次のとおりです。現在、デバイスを縦向きにしてA表示しています。次に、Bモーダルでプレゼンテーションを行います。次に、デバイスを回転させると、Bも一緒に回転しAますが、そのままです。

下にあるビュー()も回転するように、この回転を処理する方法について誰かにアドバイスしてAもらえますか?

4

1 に答える 1

6

ModalViewController は、現在のワークフローを中断し、新しいビューのセットを表示するために使用されます。したがって、モーダルに表示する場合、この場合は B を表示しているため、現在アクティブな Viewcontroller は B であり、A ではありません。

ViewController は、Model-View-Controller (MVC) デザイン パターンの従来のコントローラー オブジェクトです。また、ユーザー インターフェイス、ジェスチャ認識、イベント管理 (ボタンなど)、およびそれらに存在するビューの配置も処理します。

B を提示すると、現在のビューコントローラーが A から B に変更されたため、回転しようとすると (向きのサポートが提供されている場合)、B のビューはビューコントローラーがアクティブであるために影響を受け、回転に応答します。ビューは不透明であるため、通常、これらは気付かれません。あなたの場合、ビューは透明で、A が回転に応答していないことがわかります。

上記の例をiOS6で試しました(あなたが言及したものから)

ViewController2 *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"VC2"];
vc.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:YES completion:nil];

ここで A はポートレート モードのままです

2番目のビューコントローラーのビューをサブビューとして追加すると、Aがランドスケープに変更されました

ViewController2 *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"VC2"];
vc.view.backgroundColor = [UIColor clearColor];
self.view addSubview:vc.view];

これは、B のビューが A に追加されたサブビューであったため、2 回目の試行でアクティブなビューコントローラーが B ではなく A であったために発生しました。

于 2013-01-24T07:43:56.903 に答える