1

横向きからモーダル ビューを表示する際に奇妙な問題が発生しています。この問題は、新しいビューベースのアプリケーションで開始し、次の手順を実行するだけで再現できます。

  1. 表示される新しいUIViewControllerサブクラスを作成します。私は私の名前を付けましたModalViewController。ビューの背景色を変更して、バグをより目立たせます。

  2. return YES;両方のコントローラーでshouldAutorotateToInterfaceOrientation:

  3. メイン ビューに を追加しIBActionてモーダルを表示し、このアクションをメイン ビュー コントローラーのボタンに接続します。

    - (IBAction)showModal {  
      ModalViewController *vc = [[ModalViewController alloc] initWithNibName:@"ModalViewController" bundle:nil];  
      [self presentModalViewController:vc animated:NO];  
      [vc release];  
    }
    

ランドスケープ モードからボタンをクリックすると、問題が発生するはずです。ビュー全体が左上に移動します。

この問題を経験した人、または回避策がある人はいますか? iPadでも同様の問題が発生しています。

代替テキスト

4

3 に答える 3

1

ビューに正しいフレームがviewDidAppearあり、しばらくして混乱していたことに気付いた後、で次のように実装することでこれを修正することになりましたModalViewControllerCGRectこれは、という名前のインスタンス変数を想定していますframe_

- (void)viewDidAppear:(BOOL)animated {
  [super viewDidAppear:animated];
  frame_ = [[self view] frame];
  [self performSelector:@selector(fixFrame) withObject:nil afterDelay:0];
}

- (void)fixFrame {
  [[self view] setFrame:frame_];
}

これはバグだと思います。

于 2010-12-16T10:01:42.590 に答える
0
  [self presentModalViewController:vc animated:YES];  

アニメーションを無効にする代わりに、アニメーションを有効にしてみてください。

于 2010-12-16T08:34:11.377 に答える
0

どの自動サイズ変更マスクを使用していますか? (XIB ファイルで設定します。) 画面の右側に付いていないように見えます。

また、ビューはステータス バーのサイズを考慮していますか? (下部のギャップは、ステータス バーとサイズが非常に似ていることに注意してください。)

ビューのタイトル バーにある矢印を押すと、Interface Builder で多くのことをシミュレートできます。

于 2010-12-16T10:08:35.333 に答える