将视图控制器加载到小于屏幕大小的容器视图

时间:2018-01-19 03:47:46

标签: ios swift

我有一个用于导航的容器视图。 它的高度是屏幕高度的75%,在我的主导航控制器上我加载了这个容器,并且在这个容器中我加载了另一个控制器:

   let storyboard = UIStoryboard(name: "Main", bundle: nil)
        controller1  = storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
        controller1.delegate=self


        controller1.view.frame=ContainerView.bounds
        ContainerView.addSubview(controller1.view)
        addChildViewController(controller1)
        controller1.didMove(toParentViewController: self)

此控制器覆盖所有屏幕,而不仅仅是其中的75%,在其后面我看到另一个容器 - 用作底栏,但它不应覆盖它。

故事板: enter image description here

在现实中,“容器”,涵盖“bar”。

1 个答案:

答案 0 :(得分:1)

使用两个容器视图

创建的示例项目

在这些视图中添加两个容器视图和两个不同的VC

链接 - https://github.com/iOS-Geek/ContainerViews.git

StoryBoard:

enter image description here

预期产出: -

enter image description here

可以使用多个容器视图和子视图尝试检查一次

在代码中更新了答案

let storyboard = UIStoryboard(name: "Main", bundle: nil)
        controller1  = storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
        controller1.delegate=self


        controller1.view.frame=ContainerView.bounds
        ContainerView.addSubview(controller1.view)
        addChildViewController(controller1)
        controller1.didMove(toParentViewController: self)

一切都很好但是这里需要添加一个属性,希望能解决你的子视图超出界限的问题

需要将translatesAutoresizingMaskIntoConstraints设置为true

所以尝试使用代码

let storyboard = UIStoryboard(name: "Main", bundle: nil)
        controller1  = storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
        controller1.delegate=self


        controller1.view.frame=ContainerView.bounds
        ContainerView.addSubview(controller1.view)
        addChildViewController(controller1)
        controller1.view.translatesAutoresizingMaskIntoConstraints = true
        controller1.didMove(toParentViewController: self)