Ответ 1
Один из способов сделать это - добавить "половинный модальный" контроллер в качестве контроллера детского представления и оживить его представление. В этом примере я создал "половинный модальный" контроллер в раскадровке с фреймом, который на половине высоты экрана размером 4 дюйма. Вы можете использовать более динамические методы для учета разных размеров экрана, но это должно помочь вам начать.
@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;
}];
}
}