Mam UIViewController
widok jako widok podrzędny / modalny na wierzchu innego UIViewController
widoku, 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 UIView
tł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 UIModalPresentationFullScreen
się 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 modalPresentationStyle
wł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,