我将如何在主视图控制器的顶部呈现“半视图”控制器?
要求:
- 呈现在主视图控制器顶部滑动的第二个视图控制器。
- 第二个视图控制器应该只显示主视图控制器的一半以上
- 主视图控制器应在第二视图控制器后面保持可见(透明背景,下面不显示黑色)
- 第二个视图控制器应使用类似于模式垂直覆盖或 iOS 7 自定义过渡的动画进行动画处理
- 当第二个视图控制器处于活动状态时,用户仍然可以与主视图控制器上的按钮进行交互(即第二个视图控制器不覆盖整个主视图控制器)
- 第二个视图控制器有自己的复杂逻辑(不能是简单的视图)
- 故事板、Segues、仅限 iOS 7
- 仅限 iPhone,不适用于 iPad。
我尝试过使用模态视图控制器,但这不允许与主视图控制器交互。有人可以提供一个示例,说明如何使用 iOS7 自定义转换或其他方法来执行此操作。
一种方法是将“半模态”控制器添加为子视图控制器,并将其视图动画到位。对于本示例,我在故事板中创建了“半模态”控制器,其框架的高度为 4 英寸 iPhone 屏幕的一半。您可以使用更动态的方法来考虑不同的屏幕尺寸,但这应该可以帮助您入门。
@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;
}];
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)