iOS:子视图控制器和自动布局

时间:2013-10-24 16:32:19

标签: ios objective-c orientation autolayout childviewcontroller

我有一个非常简单的场景,对我不起作用。我有一个带有两个视图控制器的故事板:

ViewController1
- ViewA
- ViewB

ViewController2
- ViewC

我的ViewController1按预期工作,当我旋转设备时,视图会根据我定义的自动布局正确调整。

我的ViewController2有自由格式大小(768x722),我取消选中“从笔尖调整视图大小”选项。

这是我的ViewController1 didLoad

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

    UIViewController *vc2 = [story instantiateViewControllerWithIdentifier:@"vc2"];

    [self addChildViewController:vc2];
    [vc2 didMoveToParentViewController:self];
    [self.viewA addSubview:vc2.view];
}

当我从被调用的- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation方向旋转设备ViewControlled2时,它会显示正确的方向。但是,ViewC不会自行调整大小,也不会遵循我的自动布局设置。

任何人都知道如何修复?我只想在ViewController2内添加ViewA并保持自动布局适用于ViewController2的观看次数。我只需要iOS 7的解决方案,因此不需要与早期版本兼容。

任何人都可以帮助我?

1 个答案:

答案 0 :(得分:7)

我找到了解决方案,我会在这里注册,以防有人需要它。

我创建了一个UIViewController属性来保存我的ViewController2。之后,我添加了以下方法:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    self.vc2.view.frame = self.viewA.bounds;
}