6

UIViewcontroller コンテインメントを実装しています。以下の例では、ルートコントローラーで子コントローラーのフレームサイズを設定しています。子ビューは設定したサイズで表示されますが、container1 内の境界を確認すると、設定したサイズとは異なるサイズが報告されます。

ルートコントローラー (コンテナー)

- (void)viewDidLoad
{
  [super viewDidLoad];


self.containA = [[Container1 alloc]init];
self.containB = [[Container2 alloc]init];

 self.containA.view.frame = CGRectMake(50, 50,50, 50);
 self.containB.view.frame = CGRectMake(50, 50, 300, 300);

   [self addChildViewController:self.containA];
   [self addChildViewController:self.containB];

  [self.view addSubview:self.containA.view];

コンテナ1

-(void)viewDidLoad {
    [super viewDidLoad];




UIView *view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
//[self.view addSubview:view];
self.view = view;
self.view.backgroundColor = [UIColor redColor];
[view release];
 NSLog(@"view dims %f %f",self.view.bounds.size.width,self.view.bounds.size.height);
}

コンテナー 1 ビューからのコンソール出力は 768.000000 1004.000000 を暗くします

この問題は、ビュー フレームを UIScreen メイン画面]applicationFrame に設定することに関連していると思いました。そのため、このコードをすべて削除して、uiview が自動的に作成されるようにしました。問題はまだ残っています..

4

1 に答える 1

6

ビュー フレームは、viewDidLoad では実際には使用できません。ジオメトリを操作するすべてのコードを viewWillAppear に移動する必要があります。システムは、viewDidLoad で設定したすべての変更をそこからトムが画面に表示されるまでの間に破棄します。

于 2012-07-08T16:27:00.610 に答える