Wyświetl clearColor UIViewController nad UIViewController

mamUIViewController widok jako widok podrzędny / modalny na innyUIViewController widok, taki jak to, że widok podrzędny / modalny powinien być przezroczysty, a wszelkie komponenty dodawane do widoku podrzędnego powinny być widoczne. Problem polega na tym, że mam widok podrzędny, który pokazuje czarne tło zamiast mieć clearColor. Próbuję to zrobićUIView jako clearColor nie czarne tło. Czy ktoś wie, co jest z nim nie tak? Każda sugestia została doceniona.

FirstViewController.m

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];

[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:vc animated:NO];  

SecondViewController.m

- (void)viewDidLoad 
{
     [super viewDidLoad];
     self.view.opaque = YES;
     self.view.backgroundColor = [UIColor clearColor];
}

ZDECYDOWANY: Naprawiłem problemy. Działa tak dobrze zarówno dla iPhone'a, jak i iPada. Modal View Controller bez czarnego tła tylko clearColor / transparent. Jedyne, co muszę zmienić, to wymienićUIModalPresentationFullScreen doUIModalPresentationCurrentContext. Jak to proste!

FirstViewController.m

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];

OGŁOSZENIE: Jeśli używasz amodalPresentationStyle własnośćnavigationController:

FirstViewController.m

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];

UWAGA: Zła wiadomość jest taka, że ​​powyższe rozwiązanie nie działa na iOS 7. Dobrą wiadomością jest to, że rozwiązałem problem z iOS7! Poprosiłem kogoś o pomoc i oto co powiedział:

Podczas modalnego przedstawiania kontrolera widoku system iOS usuwa kontrolery widoku znajdujące się pod nim z hierarchii widoków na czas jego wyświetlania. Podczas gdy widok modalnie prezentowanego kontrolera widoku jest przezroczysty, pod nim nie ma nic oprócz okna aplikacji, które jest czarne. iOS 7 wprowadził nowy styl prezentacji modalnej,UIModalPresentationCustom, co powoduje, że iOS nie usuwa widoków pod prezentowanym kontrolerem widoku. Aby jednak skorzystać z tego stylu prezentacji modalnej, musisz dostarczyć swojego przedstawiciela ds. Przejścia do obsługi prezentacji i odrzucania animacji. Zostało to opisane w przemówieniu „Niestandardowe przejścia przy użyciu kontrolerów widoku z WWDC 2013”https://developer.apple.com/wwdc/videos/?id=218 który obejmuje również sposób wdrożenia własnego delegata przejściowego.

Możesz zobaczyć moje rozwiązanie powyższego problemu w iOS7:https://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions

questionAnswers(16)

yourAnswerToTheQuestion