3

私は何か奇妙なことを実験しています。すべての画面に収まるビューを作成したい (statusBar から navBar を差し引いたもの)。これが私の内部で行ったことviewDidLoadです:

CGFloat navHeight = self.navigationController.navigationBar.frame.size.height;
UIView *test = [[UIView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight-20-navHeight)];
test.backgroundColor = [UIColor greenColor];
//test.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view addSubview:test];

自動サイズ変更行をコメントのままにしておくと、これは正常に機能しますが、回転すると収まりません (これは予想されることです)。

自動サイズ変更行のコメントを外すと、ポートレート モードで最初に起動したときのビューのサイズは 320x430 のようになり、ランドスケープ モードで最初に起動したときは 480x200 のようになります...「最初の起動」とは、「別のビューから来る」ことを意味します。

柔軟なマージンを追加しようとしましたが、修正されませんでした (とにかくフルスクリーンにしたいので、(x,y) は常に (0,0) になります)。

4

1 に答える 1

6

UINavigationController は子ビューのサイズを変更するので、ナビゲーションやステータス バーを考慮する必要はありません。このビューをVCのビューに追加して、柔軟な幅/高さに設定するだけで、親ビューを埋めることができます。

    UIView *test = [[UIView alloc] initWithFrame:self.view.bounds];
    test.backgroundColor = [UIColor greenColor];
    test.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:test];
于 2013-02-18T23:48:37.647 に答える