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 main screen]applicationFrame 相关。所以我删除了所有这些代码,以便自动创建 uiview。问题依旧。。

4

1 回答 1

6

视图框架在 viewDidLoad 中实际上是不可用的;您应该将所有几何操作代码移到 viewWillAppear 中。系统将破坏您在 viewDidLoad 中设置的任何更改,从那里到汤姆即将出现在屏幕上。

于 2012-07-08T16:27:00.610 回答