Ich habe eine UIViewController
Ansicht als Unteransicht / Modal über einer anderen UIViewController
Ansicht, z. B. dass die Unteransicht / das Modal transparent sein sollte und alle Komponenten, die der Unteransicht hinzugefügt werden, sichtbar sein sollten. Das Problem ist, dass ich habe, dass die Unteransicht schwarzen Hintergrund zeigt, um clearColor zu haben. Ich versuche UIView
als clearColor nicht schwarzen Hintergrund zu machen. Weiß jemand, was daran falsch ist? Jeder Vorschlag geschätzt.
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];
}
BEHOBEN : Ich habe die Probleme behoben. Es funktioniert so gut für iPhone und iPad. Modal View Controller ohne schwarzen Hintergrund, nur clearColor / transparent. Das einzige , was ich ändern muß , ist I ersetzt UIModalPresentationFullScreen
zu UIModalPresentationCurrentContext
. Wie einfach ist das!
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];
HINWEIS: Wenn Sie eine modalPresentationStyle
Eigenschaft von verwenden 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];
HINWEIS: Die schlechte Nachricht ist, dass die oben genannte Lösung unter iOS 7 nicht funktioniert. Die gute Nachricht ist, dass ich das Problem für iOS7 behoben habe! Ich habe jemanden um Hilfe gebeten und hier ist, was er sagte:
Wenn ein Ansichts-Controller modal dargestellt wird, entfernt iOS die darunter liegenden Ansichts-Controller für die Dauer der Darstellung aus der Ansichtshierarchie. Während die Ansicht Ihres modal dargestellten Ansichts-Controllers transparent ist, befindet sich nichts darunter außer dem schwarzen App-Fenster. iOS 7 führte einen neuen modalen Präsentationsstil ein UIModalPresentationCustom
, der bewirkt, dass iOS die Ansichten unter dem Controller für präsentierte Ansichten nicht entfernt. Um diesen modalen Präsentationsstil verwenden zu können, müssen Sie jedoch Ihren eigenen Übergangsdelegierten bereitstellen, um die Präsentation zu verwalten und Animationen zu schließen. Dies wird im Vortrag "Benutzerdefinierte Übergänge mit View Controllern" von WWDC 2013 https://developer.apple.com/wwdc/videos/?id=218 beschrieben, in dem auch erläutert wird, wie Sie Ihren eigenen Übergangsdelegierten implementieren.
Möglicherweise sehen Sie meine Lösung für das oben genannte Problem in iOS7: https://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions
modalViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
wird das Problem lösen,