在容器视图中加载ViewController

我有一个VC全屏幕的容器视图。 如果我从故事板手动添加一个孩子到containerView做一个embeddedsegue看起来不错: 在这里输入图像说明

但我通过代码embeddedVC:

class BannerContainerVC: UIViewController { @IBOutlet weak var container: UIView! override func viewDidLoad() { super.viewDidLoad() let vc = storyboard?.instantiateViewControllerWithIdentifier("test") as UIViewController self.container.addSubview(vc.view) } } 

我得到超级奇怪的结果: 在这里输入图像说明

你需要告诉你的BannerContainer视图控制器,它有一个新的子控制器,并告诉Child有一个父VC。 这在苹果Docs 这里描述。 喜欢这个:

  [self addChildViewController:vc]; vc.view.frame = CGRectMake(0, 0, self.container.frame.size.width, self.container.frame.size.height); [self.container addSubview:vc.view]; [vc didMoveToParentViewController:self]; 

或者在Swift中:

  self.addChildViewController(vc) vc.view.frame = CGRectMake(0, 0, self.container.frame.size.width, self.container.frame.size.height); self.container.addSubview(vc.view) vc.didMoveToParentViewController(self) 

这确保将各种布局和触摸方法传递给儿童VC; 我怀疑你的布局问题可能是由于目前没有被调用的方法。

试图使用上面的答案,但事实certificateCGRectMake不可用了。

更新了Swift 3

 self.addChildViewController(vc) vc.view.frame = CGRect(x: 0, y: 0, width: self.container.frame.size.width, height: self.container.frame.size.height) self.container.addSubview(vc.view) vc.didMoveToParentViewController(self)