Mam UIViewControllerwidok jako widok podrzędny / modalny na wierzchu innego UIViewControllerwidoku, na przykład widok podrzędny / widok modalny powinien być przezroczysty i wszystkie komponenty dodane do widoku podrzędnego powinny być widoczne. Problem polega na tym, że u mnie podwidok pokazuje czarne tło zamiast mieć clearColor. Staram się, aby UIViewtło było jasne, a nie czarne. Czy ktoś wie, co jest z tym nie tak? Wszelkie sugestie są mile widziane.
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];
}
ROZWIĄZANE : naprawiłem problemy. Działa tak dobrze zarówno na iPhonie, jak i iPadzie. Modalny kontroler widoku bez czarnego tła po prostu przezroczysty / przezroczysty. Jedyne, co trzeba zmienić to Wymieniłem UIModalPresentationFullScreensię UIModalPresentationCurrentContext. Jakie 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];
UWAGA: Jeśli używasz modalPresentationStylewłaściwości 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 naprawiłem problem z iOS7! Poprosiłem kogoś o pomoc i oto co powiedział:
Podczas prezentacji kontrolera widoku modalnie system iOS usuwa kontrolery widoku znajdujące się pod nim z hierarchii widoku na czas, w którym jest prezentowany. Chociaż widok kontrolera widoku prezentowanego modalnie jest przezroczysty, pod nim nie ma nic poza oknem aplikacji, które jest czarne. iOS 7 wprowadził nowy modalny styl prezentacji UIModalPresentationCustom, który powoduje, że iOS nie usuwa widoków pod prezentowanym kontrolerem widoku. Jednak aby użyć tego modalnego stylu prezentacji, musisz zapewnić własnego delegata przejścia do obsługi prezentacji i odrzucania animacji. Jest to opisane w wykładzie „Niestandardowe przejścia przy użyciu kontrolerów widoku” z WWDC 2013 https://developer.apple.com/wwdc/videos/?id=218, w którym omówiono również, jak zaimplementować własnego delegata przejścia.
Możesz zobaczyć moje rozwiązanie powyższego problemu w iOS7: https://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions
modalViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext; rozwiąże problem,



