私のコンテナは、別のビューをそのビュー階層UIViewController
に追加します。CustomViewController
最初にコントローラーを作成し、次にビューのサイズを変更し、最後にビューに追加します。
//create the controller
customController = [[CustomViewController alloc] initWithNibName:nil bundle:nil];
[customController willMoveToParentViewController:self];
[self addChildViewController:customController];
[customController didMoveToParentViewController:self];
//size and position the controller's view
customController.view.frame = CGRectMake(10, 10, 100, 50);
//add the new controller's view
[self.view addSubview:customController.view];
[customController didMoveToParentViewController:self];
サイズ変更の部分が私の問題です。
はCustomViewController
、プログラムでビューを作成しますloadView
。ここで、いくつかのサブビューが追加されます。CustomViewControllerは、ビューがどのようにサイズ変更/配置されるかを実際には認識していないため、単純に初期化されますinit
(フレームは提供されません)。
これは単純なUIViewでは問題なく機能しますが、サブビューを追加するとすぐに問題が発生します。フレームがCGRectZeroであるため、これらのサブビューを`loadView'内に配置することは実際には機能しません。さらに、自動サイズ変更マスクを設定して適切に拡大縮小すると、最終的にはすべてのサブビューが拡大してビュー全体を占めるようになります。おそらく、サブビューの座標がすべてビューのフレームの100%であるためです(ビューのフレームがCGRectZeroであるため)。
要するに、私はどのサイズのフレームを使用することになっていますloadView
か?ビューが占めると予想される一般的なビューサイズを想定する必要がありますか?または、サブビューを追加できるが、コントローラーのビューのサイズ変更を延期できる、より良いアプローチはありますか?