【发布时间】:2018-03-10 21:38:49
【问题描述】:
【问题讨论】:
标签: swift uiviewcontroller programmatically-created programmatically
【问题讨论】:
标签: swift uiviewcontroller programmatically-created programmatically
您应该使用容器视图,并将容器视图的框架设置为屏幕高度的一半 .但您可以在对象库 xcode 中使用容器视图。 容器视图看起来像在您的视图控制器类中使用的视图,在类名下面添加此代码:
class YourViewController: UIViewController {
// MARK: Properties
let containerView = UIView()
在您的 viewDidLayoutSubviews() 函数中,您应该像这样设置容器视图的框架:
override func viewWillLayoutSubviews() {
containerView.frame = CGRect(x: 0, y: self.view.frame.midY, width: self.view.frame.width, height: self.view.frame.height / 2)
let yourSecondViewController = YourSecondViewController()
addContentContainerView(yourSecondViewController)
}
现在你有一个覆盖一半屏幕的容器视图, 那么你应该将你的第二个视图控制器添加到你的容器视图中, 所以你应该以编程方式创建第二个视图控制器类,或者你应该在你的 xcode 故事板中创建一个视图控制器并为此设置故事板 ID。
要在容器视图中添加和删除子视图控制器,您可以使用以下功能:
private func addContentContainerView(_ childViewController: UIViewController) {
childViewController.willMove(toParentViewController: self)
containerView.addSubview(childViewController.view)
self.addChildViewController(childViewController)
childViewController.didMove(toParentViewController: self)
}
private func removeContentContainerView(_ childViewController: UIViewController) {
childViewController.didMove(toParentViewController: nil)
childViewController.view.removeFromSuperview()
childViewController.removeFromParentViewController()
}
那么你应该使用私有函数 addContentContainerView(_ childViewController: UIViewController) 将你的第二个视图控制器添加到你的容器视图中
如果您以编程方式创建第二个并设置,您应该使用此代码在您的 viewWillLayoutSubviews 方法中将其添加到您的容器中,如下所示:
override func viewWillLayoutSubviews() {
containerView.frame = CGRect(x: 0, y: self.view.frame.midY, width: self.view.frame.width, height: self.view.frame.height / 2)
let yourSecondViewController = YourSecondViewController()
addContentContainerView(yourSecondViewController)
}
但是如果你在故事板中创建你的第二个视图控制器,你应该为此设置 id,选择视图控制器,然后在身份集故事板 ID 下选择身份检查器:SecondViewController 那么最后一个 viewWillLayoutSubwies ,你的 viewWillLayoutSubviews 应该是这样的:
override func viewWillLayoutSubviews() {
containerView.frame = CGRect(x: 0, y: self.view.frame.midY, width: self.view.frame.width, height: self.view.frame.height / 2)
let mainStoryBoard = UIStoryboard(name: "Main", bundle: nil)
let yourSecondViewController = mainStoryBoard.instantiateViewController(withIdentifier: "SecondViewController")
addContentContainerView(yourSecondViewController)
}
对于滚动,您应该添加一个 UIScrollView 并将其高度设置为 self.view.frame.height * 1.5
【讨论】: