在子控制器中查看控制器帧大小

时间:2012-07-08 16:21:55

标签: objective-c ios uiviewcontroller

我正在实现UIViewcontroller包含。在下面的示例中,我在root控制器中设置了childcontrollers的帧大小。子视图显示为我设置的大小,但是当我在container1中检查其边界时,它会报告与我设置的大小不同的大小。

Rootcontroller(容器)

- (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];

Container1

-(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的控制台输出    查看dims 768.000000 1004.000000

我认为这个问题与将视图框设置为UIScreen主屏幕] applicationFrame有关。因此,我删除了所有这些代码,以便自动创建uiview。问题仍然存在..

1 个答案:

答案 0 :(得分:5)

查看框架在viewDidLoad中实际上不可用;您应该将所有几何操作代码移动到viewWillAppear中。系统会破坏你在viewDidLoad中设置的任何更改,以及它在屏幕上显示的时间。