Autolayout - 视图控制器框架不正确

Autolayout - view controller frame incorrect

我想弄清楚为什么我的视图控制器的框架(从 xib 加载)在通过 presentViewController 呈现时设置正确:

self.presentViewController(testVC, animated: true, completion: nil);

...但添加为子视图控制器时仍保持在 (0, 0, 600, 600):

self.addChildViewController(testVC)
self.view.addSubview(testVC.view)
testVC.didMoveToParentViewController(self)
testVC.view.setNeedsLayout(); (makes no difference)

我可以提供一个孤立的例子来更清楚地说明问题。想法?

试试这个。

self.addChildViewController(testVC)
testVC.view.frame=self.view.bounds//or set by CGRectMake()
testVC.willMoveToParentViewController(self)
self.view.addSubview(testVC.view)
testVC.didMoveToParentViewController(self)

那是你忘记给它加框了!你是说:

self.view.addSubview(testVC.view)

但是您既没有应用 frame 也没有附加任何约束,因此不会调整视图的大小。 现在是家长了。调整子视图的大小取决于。如果你不这样做,它的大小就是故事板中的大小——600 x 600,就像你说的那样。它不会被魔法调整大小。 必须这样做。