ViewController Containment - Child ViewController在Landscape中没有正确调整大小

时间:2014-05-26 11:39:29

标签: ios cocoa-touch uiview uiviewcontroller landscape

该应用程序设置为仅支持横向模式。

自定义UIViewController包含以下代码:

- (void)viewDidLoad {
    [super viewDidLoad];

    MBMainViewController *mainViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MBMainViewController"];

    [self addChildViewController:mainViewController];
    [self.view addSubview:mainViewController.view];
    [mainViewController didMoveToParentViewController:self];

    self.mainViewController = mainViewController;
}

启动应用时,子视图控件(mainViewController)视图的框架仍设置为纵向尺寸。

我是否遗漏了某些内容,因此在子视图控件的视图中设置了正确的帧大小?

1 个答案:

答案 0 :(得分:1)

这显然只发生在从故事板中实例化的UIViewController。在这种情况下,它仅在我们设置属于子视图控制器的视图的autoresizingMask时才有效:

- (void)viewDidLoad {
    [super viewDidLoad];

    MBMainViewController *mainViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MBMainViewController"];

// Set the autoresizingMask as a fix
    mainViewController.view.autoresizingMask = UIViewAutoResizingFlexibleWidth | UIViewAutoResizingFlexibleHeight;


    [self addChildViewController:mainViewController];
    [self.view addSubview:mainViewController.view];
    [mainViewController didMoveToParentViewController:self];

    self.mainViewController = mainViewController;
}

我的猜测是,当你从故事板中实例化一个视图控制器时,已经设置了约束,或者没有使用正确的autoresizingMask值。