2

ストーリーボードを使用して iPad ランドスケープ アプリを開発しています。私は同じために以下の手順を実行しました。私のアプリは、シミュレーターのランドスケープで画面が開いています..しかし、間違ったフレームを取得しています。

  1. ストーリーボード用の xcode からのサンプル アプリ テンプレート。
  2. info-plist ファイルからの横方向のみを許可する
  3. ストーリーボード -> UIViewController -> シミュレートされた行列 -> 向きを横向きに変更
  4. 以下のメソッドを view controller.m に実装

           - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
        {
         // Return YES for supported orientations
       return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight)); 
            } 
    

フレームと境界の NSLog を取得すると、縦長のフレームが表示されます。

   - (void)viewDidLoad
  {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    NSLog(@"bounds ::%@",NSStringFromCGRect(self.view.bounds));
    NSLog(@"frame ::%@",NSStringFromCGRect(self.view.frame));
   }

結果ログ:

   bounds ::{{0, 0}, {748, 1024}}

   frame ::{{20, 0}, {748, 1024}}

何か不足していますか?

4

2 に答える 2

5

viewDidLoad メソッドでは、正しい境界を取得できません。viewDidAppear メソッドでそれを行います。viewDidAppear メソッドは、ビューが完全に読み込まれ、境界が正しいときに呼び出されます。

于 2013-05-15T07:09:08.720 に答える