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

coa*_*sty 6 objective-c uiviewcontroller ios

我正在实现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];
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

容器1视图中的控制台输出变暗768.000000 1004.000000

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

Chr*_*hey 5

视图帧在viewDidLoad中实际上不可用; 您应该将所有几何操作代码移动到viewWillAppear中.系统将破坏你在viewDidLoad中设置的任何更改,以及当它关于tom进入屏幕时.

  • 实际上,你应该将几何变化移动到iOS 5之前的`-viewDidAppear`和iOS 5+的`-viewWillLayoutSubviews`.`-viewWillAppear:`如果正在设置动画,`实际上可能没有正确的边界/方向. (23认同)