在另一个 ViewController 上呈现 ViewController
Presenting a ViewController over another ViewController
我今天有一个很长的问题,因为它需要一些解释。让我们从一个例子开始。
例子
假设我有三个视图控制器:
- 全尺寸视图控制器
- FirstViewController
- 第二视图控制器
FullSizeViewController,顾名思义,就是要占据整个屏幕的space。另一方面,FirstViewController 和 SecondViewController 应该只占据屏幕高度的大约 3/4。下面放几张图来说明一下。
这里我们有 FullSizeViewController。没什么特别的,只有两个按钮 - "First" 和 "Second"。如果您现在还没有了解,这两个按钮应该会切换各自的视图控制器,如下所示。
问题
我遇到了这方面的主要问题?我怎样才能
- 从底部为视图控制器设置动画
- 更改两个较小的视图控制器的大小
- 仍然允许与 FullSizeViewController 交互,即使在其主要内容之上打开了一个小视图控制器,但不是两个切换按钮?
我试过的
因为我不太确定如何做到这一点,所以我没有尝试那么多,但我尝试了一件事。
在连接到 "First" 按钮的 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?
您的全尺寸 VC 应该是 custom container view controller
。当您希望其他控制器之一出现在屏幕上时,您可以对其进行实例化,根据需要调整其大小,将其添加为 *child view controller*
,然后使用 animateWithDuration
将其框架从底部更改为筛选到您希望它结束的位置。
您不应该使用 presentViewController
,因为它会给您一个占据整个屏幕的模态 VC。如果您还没有阅读名为 "Implementing a Custom Container View Controller" 的文档,您应该阅读。
我今天有一个很长的问题,因为它需要一些解释。让我们从一个例子开始。
例子
假设我有三个视图控制器:
- 全尺寸视图控制器
- FirstViewController
- 第二视图控制器
FullSizeViewController,顾名思义,就是要占据整个屏幕的space。另一方面,FirstViewController 和 SecondViewController 应该只占据屏幕高度的大约 3/4。下面放几张图来说明一下。
这里我们有 FullSizeViewController。没什么特别的,只有两个按钮 - "First" 和 "Second"。如果您现在还没有了解,这两个按钮应该会切换各自的视图控制器,如下所示。
问题
我遇到了这方面的主要问题?我怎样才能
- 从底部为视图控制器设置动画
- 更改两个较小的视图控制器的大小
- 仍然允许与 FullSizeViewController 交互,即使在其主要内容之上打开了一个小视图控制器,但不是两个切换按钮?
我试过的
因为我不太确定如何做到这一点,所以我没有尝试那么多,但我尝试了一件事。
在连接到 "First" 按钮的 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?
您的全尺寸 VC 应该是 custom container view controller
。当您希望其他控制器之一出现在屏幕上时,您可以对其进行实例化,根据需要调整其大小,将其添加为 *child view controller*
,然后使用 animateWithDuration
将其框架从底部更改为筛选到您希望它结束的位置。
您不应该使用 presentViewController
,因为它会给您一个占据整个屏幕的模态 VC。如果您还没有阅读名为 "Implementing a Custom Container View Controller" 的文档,您应该阅读。