joh*_*son 14 modalviewcontroller ios ios7 custom-transition
如何在主视图控制器的顶部显示"半视图"控制器?
要求: - 呈现第二个视图控制器,它在主视图控制器的顶部滑动. - 第二个视图控制器应仅显示主视图控制器的一半以上 - 主视图控制器应保持在第二个视图控制器后面可见(透明背景,下方未显示黑色) - 第二个视图控制器应使用类似于模态垂直覆盖的动画制作动画,或者iOS 7自定义转换 - 当第二个视图控制器处于活动状态时,用户仍然可以与主视图控制器上的按钮交互(即第二个视图控制器不覆盖整个主视图控制器)r - 第二个视图控制器有自己的复杂逻辑(不能简单视图) - 仅限故事板,Segues,iOS 7 - 仅限iPhone,而非iPad.
我尝试过使用模态视图控制器,但这不允许与主视图控制器交互.有人可以提供一个如何使用iOS7自定义转换或其他方法执行此操作的示例.
rde*_*mar 26
一种方法是将"半模式"控制器添加为子视图控制器,并将其视图设置到适当位置.在这个例子中,我在故事板中创建了"半模式"控制器,其框架的高度是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;
}];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12776 次 |
| 最近记录: |