ViewController Containment - 子 ViewController 在横向中未正确调整大小

Posted

技术标签:

【中文标题】ViewController Containment - 子 ViewController 在横向中未正确调整大小【英文标题】:ViewController Containment - Child ViewController not sizing correctly in Landscape 【发布时间】:2014-05-26 11:39:28 【问题描述】:

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

自定义的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】:

这显然只发生在从情节提要实例化的 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 值。

【讨论】:

以上是关于ViewController Containment - 子 ViewController 在横向中未正确调整大小的主要内容,如果未能解决你的问题,请参考以下文章

将图像从 ViewController 传递到 ViewController

ViewController 将结果返回给调用它的 ViewController [重复]

你如何将数据从 ViewController 传递到包含单独 ViewController 的 PageViewController,然后这些 ViewController 将使用这些数据?

需要从另一个viewController调用其他viewController中的方法

Xcode 10.1 ViewController.h 与 ViewController.swift

当 ViewController 被呈现的 ViewController 覆盖时触发事件