我正在实现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。问题仍然存在..
答案 0 :(得分:5)
查看框架在viewDidLoad中实际上不可用;您应该将所有几何操作代码移动到viewWillAppear中。系统会破坏你在viewDidLoad中设置的任何更改,以及它在屏幕上显示的时间。