在另一个ViewController上呈现ViewController

时间:2015-03-17 01:55:18

标签: ios swift uiviewcontroller

我今天有一个相当冗长的问题,因为它需要一些解释。让我们从一个例子开始。


实施例

假设我有三个视图控制器:

  1. FullSizeViewController
  2. FirstViewController
  3. SecondViewController
  4. FullSizeViewController,如名称所示,旨在占据整个屏幕的空间。另一方面,FirstViewController和SecondViewController应该只占屏幕高度的3/4左右。这里有几张图片来说明。

    FullSizeViewController

    这里我们有FullSizeViewController。没什么特别的,只有两个按钮 - “First”& “第二”。如果你现在还没有抓住,这两个按钮应该切换每个相应的视图控制器,如下所示。

    FirstViewContoller


    问题

    我遇到了主要问题吗?我怎么能够

    1. 从底部为视图控制器设置动画
    2. 更改两个较小视图控制器的大小
    3. 即使在其主要内容之上打开一个小视图控制器,但仍然允许与FullSizeViewController进行交互,而不是两个切换按钮?

    4. 我尝试过什么

      由于我不太清楚如何做到这一点,我没有尝试过这么多,但我尝试了一件事。

      在连接到“第一个”按钮的IBAction中:

      let firstVC: FirstViewController = self.storyboard?.instantiateViewControllerWithIdentifier("FirstViewController")! as FirstViewController
              self.presentViewController(firstVC, animated: true, completion: nil)
      

      在FirstViewController的viewDidLoad中:

      self.view.frame.size = CGSizeMake(UIScreen.mainScreen().bounds.size.width, UIScreen.mainScreen().bounds.size.height - 68)
      

      tl; dr我如何实现this

1 个答案:

答案 0 :(得分:2)

您的全尺寸 VC 应为custom container view controller。当您希望其他控制器出现在屏幕上时,您可以实例化它,根据需要调整大小,将其添加为*child view controller*,然后使用animateWithDuration从底部更改其框架屏幕到你希望它结束​​的地方。

您不应该使用presentViewController,因为这会为您提供一个接管整个屏幕的模式 VC 。如果您还没有,请阅读名为“实现自定义容器视图控制器”的文档。