В MainViewController открываю PopupViewController с помощью метода presentViewController:animated:completion.
В PopupViewController добавляется popupView (красная на видео), а self.view делаю прозрачной.
Но по завершению анимации появления контроллера self.view становится белым, почему так происходит?
+ хотелось бы сделать закрытие (dismissViewControllerAnimated) по клику на self.view PopupViewController'а. Но если повесить UITapGestureRecognizer с закрытием на self.view, событие будет срабатывать по тапу как бекграунда так и popupView, а нужно чтоб срабатывал только бекграунд.
www.youtube.com/watch?v=sFUMs-RUtXE - видео
https://github.com/nullproduction/PopupViewController - полный код тестового проекта
p.s. не использую nib и сторибоард, предпологаю что может быть связанно с этим
//
// MainViewController.m
//
#import "MainViewController.h"
#import "PopupViewController.h"
@implementation MainViewController
- (void)viewDidLoad
{
self.view.backgroundColor = [UIColor grayColor];
[self addPopupButton];
[super viewDidLoad];
}
- (void)addPopupButton
{
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Show modal" style:UIBarButtonItemStyleBordered target:self action:@selector(showPopup)];
}
- (void)showPopup
{
PopupViewController *popupViewController = [[PopupViewController alloc] init];
[self presentViewController:popupViewController animated:YES completion:nil];
}
@end
//
// PopupViewController.m
//
#import "PopupViewController.h"
@implementation PopupViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor clearColor];
[self addPopupView];
}
- (void)addPopupView
{
popupView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 200, 200)];
popupView.backgroundColor = [UIColor redColor];
[self.view addSubview:popupView];
}
@end