子视图未使用addSubview调整大小

时间:2014-08-09 09:53:33

标签: ios objective-c resize addsubview

我有一个带有子视图的testViewController。 Autolayout已关闭。在InterfaceBuilder中,我设置了自动调整大小属性。

enter image description here

我从MatchViewContoller调用此viewController:

-(void)showTutorial
{
    self.testViewController = [[TestViewController alloc] init];
    [self.view addSubview:self.testViewController.view];
}

在testViewController中:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    self.view.backgroundColor=[[UIColor blackColor] colorWithAlphaComponent:.6];
}

视图显示正确,但在iPhone 3.5英寸模拟器中打开视图时,子视图未调整大小。所以现在底部不可见了。

enter image description here

我已经用[self.navigationController pushViewController:testViewController animated:NO];尝试了它然后它工作正常...子视图的子视图完全调整大小。 enter image description here

但是当我使用[self.view addSubview:self.testViewController.view];时,子视图没有调整大小....

我已尝试在testViewController和MatchViewController上打开和关闭“Autoresize Subviews”的所有组合......但没有任何效果......

我在这里缺少什么?使用addSubview方法添加调整大小时不能正常工作吗?

1 个答案:

答案 0 :(得分:0)

问题是您将testViewController的视图添加为子视图,但是您没有在viewController层次结构中添加控制器,因此不会调用像viewDidLoad这样的生命周期调用。

试试这个:

-(void)showTutorial
{
    self.testViewController = [[TestViewController alloc] init];
    [self addChildViewController:self.testViewController];
    [self.testViewController didMoveToParentViewController:self];
    [self.view addSubview:self.testViewController.view];
}