如何在iOS 7自定义转换的顶部显示一个半模式视图控制器

我将如何去在主视图控制器的顶部呈现“半视图”控制器?

要求:提供第二个视图控制器,滑过主视图控制器的顶部。 – 第二个视图控制器应该只显示超过一半的主视图控制器 – 主视图控制器应该保持在第二个视图控制器后面(透明背景,而不是在下面显示黑色) – 第二个视图控制器应该animation与animation类似于模态垂直覆盖,或iOS 7自定义转换 – 当第二个视图控制器处于活动状态(即第二个视图控制器不覆盖整个主视图控制器)时,用户仍然可以与主视图控制器上的button进行交互。r – 第二个视图控制器具有自己的复杂逻辑(不能简单视图) – 故事板,Segges,仅限iOS 7 – 仅iPhone,而不是iPad。

我已经尝试使用模式视图控制器,但是这不允许与主视图控制器交互。 有人可以提供一个如何使用iOS7自定义转换或其他方法做到这一点的例子。

一种方法是将“half modal”控制器添加为子视图控制器,并将其视图设置到位。 在这个例子中,我在故事板中创build了一个框架,这个框架是一个4英寸iPhone屏幕高度的一半,可以使用更多的dynamic方法来说明不同的屏幕大小,但是这会让你开始。

@interface ViewController () @property (strong,nonatomic) UIViewController *modal; @end @implementation ViewController - (IBAction)toggleHalfModal:(UIButton *)sender { if (self.childViewControllers.count == 0) { self.modal = [self.storyboard instantiateViewControllerWithIdentifier:@"HalfModal"]; [self addChildViewController:self.modal]; self.modal.view.frame = CGRectMake(0, 568, 320, 284); [self.view addSubview:self.modal.view]; [UIView animateWithDuration:1 animations:^{ self.modal.view.frame = CGRectMake(0, 284, 320, 284);; } completion:^(BOOL finished) { [self.modal didMoveToParentViewController:self]; }]; }else{ [UIView animateWithDuration:1 animations:^{ self.modal.view.frame = CGRectMake(0, 568, 320, 284); } completion:^(BOOL finished) { [self.modal.view removeFromSuperview]; [self.modal removeFromParentViewController]; self.modal = nil; }]; } }