【问题标题】:UIStoryboardSegue embedUIStoryboardSegue 嵌入
【发布时间】:2018-05-14 15:55:14
【问题描述】:

在界面构建器中的 UIView(添加为容器视图)中嵌入 segue 究竟是做什么的?我正在尝试以编程方式嵌入 ViewController,因为我想在两个不同的之间进行选择。我想我正确设置了容器视图的限制约束,因为当我在情节提要中添加带有嵌入 segue 的子视图控制器时,一切正常,但是一旦我使用以下代码嵌入它,视图控制器就会与底部约束重叠的容器视图,它弄乱了我的布局..

let viewController = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "MyViewController")
self.containerView.addSubview(viewController.view)
self.addChildViewController(viewController)
NSLayoutConstraint.activate([
    viewController.view.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
    viewController.view.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
    viewController.view.topAnchor.constraint(equalTo: containerView.topAnchor),
    viewController.view.bottomAnchor.constraint(equalTo: containerView.bottomAnchor)
])

viewController.didMove(toParentViewController: self)

【问题讨论】:

标签: ios swift uiscrollview uicontainerview


【解决方案1】:

感谢@Dinesh Balasubramanian,我现在得到了以下代码:

let viewController = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "MyViewController")
self.containerView.addSubview(viewController.view)
self.addChildViewController(viewController)
viewController.view.frame = containerView.bounds
viewController.didMove(toParentViewController: self)

【讨论】:

  • 不清楚为什么这会比您最初提供的代码更好。自动布局是定位子视图比设置其frame 更好的方法,因此您原始问题中的代码更好。
  • 嗯,这取决于“作品”的概念。如果containerView 的框架发生变化,您的viewController.view 将被留下。最好更具体地说明原始代码有什么问题。顺便说一句,它有一个问题是您以错误的顺序调用addChildViewControlleraddSubview(尽管我怀疑这是问题的原因)。
猜你喜欢
  • 2011-12-10
  • 2015-12-18
  • 2014-11-26
  • 1970-01-01
  • 2016-12-02
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
相关资源
最近更新 更多