web-dev-qa-db-ja.com

iPhone:UIViewControllerフレームの設定方法は?

私は他のUIViewControllerをサブビューとして追加するルートUIViewControllerを持っています。現在、各サブビューは低すぎます(カスタムビルドのタブバーを覆っています)。次のようにしようとすると、うまくいきません。

// Test setting frame size to see if it works
self.view.frame = CGRectMake(0, 0, 200, 200);

フレームサイズを変更することはありません。

つまり、私の質問は、UIViewControllerがサブビューとして追加された後に初期化されるときに、フレームをどのように設定できるのですか?

19
Nic Hubbard

@Nic私はあなたがその他のビューを追加しているとき、そのときに他のビューのフレームサイズを次のように定義するべきだと思います:

Someviewcontroller *c = initWithNibName
c.view.frame = CGRectMake(0, 0, 200, 200);
[self addSubView:c];

これが機能するかどうかはわかりませんが、このようなものです。

21
Robin

まず、フレームのサイズが実際に変更されていないことを確認します。おそらくサイズは/ is /変更されますが、内容がクリップされることを期待しています。この動作は、UIViewではデフォルトで有効になっていません。次のように設定する必要があります。

  [[self view] setClipsToBounds:YES];

新しいフレームを設定した後、フレームを再確認してサイズが変化していないことを確認するには、次のように記録してみてください。

  NSLog(@"New frame is: %@", NSStringFromCGRect([[self view] frame]));

または、変更後にブレークポイントを設定し、デバッガーで値を検査します。

6
Chris Zelenak

その後、常にあります...

// Screen, less StatusBar
CGRect l_RectFrame = [UIScreen mainScreen].applicationFrame;

または...

// Entire Screen
CGRect l_RectFrame = [UIScreen mainScreen].bounds;


MyView *l_aView = [[MyView alloc] initWithFrame:l_RectFrame];
...
4
Paul Brady