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

时间:2015-08-01 01:04:47

标签: ios swift uiviewcontroller autolayout

我试图找出为什么我的视图控制器的框架(从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)

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

2 个答案:

答案 0 :(得分:3)

试试这个。

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

答案 1 :(得分:2)

这是因为你忘了给它一个框架!你在说:

self.view.addSubview(testVC.view)

但是你既不应用frame也不附加任何约束,因此视图不会调整大小。 现在是父母。调整子视图的大小取决于。如果你不这样做,它的大小就是它在故事板中的大小 - 600乘600,就像你说的那样。它不会被魔法重新调整大小。 必须这样做。