在容器视图中加载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)