I have a containerView with full screen inside a VC. If i add a child to the containerView manually from a Storyboard doing a embed segue looks fine:
But if I embed the VC by code:
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) } }
I get super strange results:
You need to tell your BannerContainer view controller that it has a new child controller, and to tell the Child that it has a parent VC. This is described in the Apple Docs here. Like this:
[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];
Or in 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)
This ensures that various layout and touch methods are passed through to the child VC; I suspect the layout problems you have may be due to those methods not currently being called.
Tried to use the answer above but it turns out CGRectMake
isn't available anymore.
Updated for 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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With