webentwicklung-frage-antwort-db.com.de

iOS: Modal View mit transparentem Hintergrund?

Ich möchte eine Modalansicht auf einem ViewController zeigen. (hat eine Navigationssteuerung).

Meiner Ansicht nach habe ich Text und eine Schaltfläche, um die Modalansicht anzuzeigen. 

Ich habe eine .xib erstellt, die meine Modalansicht enthielt (eine Ansicht mit einem Bild und einem Label).

Wenn ich es zeige, damit:

ShareController *controller =  [[ShareController alloc] initWithNibName:@"ShareController" bundle: nil];
controller.view.backgroundColor = [UIColor clearColor];
controller.modalPresentationStyle = UIModalPresentationFormSheet;
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

[self presentViewController:controller animated:YES completion:nil];

ich habe mein Modalview, ABER der Hintergrund wird schwarz .. und ich möchte immer den Text auf meiner Ansicht sehen. (Ich habe versucht, Alpha zu setzen, etc ..; aber NICHTS läuft: '()

Jemand, der mir helfen kann?

Vielen Dank,

30
deveLost

sie können das iOS7-Beispiel überprüfen (siehe mein Comm) oder Sie können dies einfach versuchen:

entfernen Sie diese Zeile aus Ihrer "Presenting" -Methode

controller.view.backgroundColor = [UIColor clearColor];

jetzt in viewDidLoad der ShareController hinzufügen:

 self.view.backgroundColor = [UIColor clearColor];
 self.modalPresentationStyle = UIModalPresentationCurrentContext;
 self.modalPresentationStyle = UIModalPresentationFormSheet;

PS

wenn du einen navigationController hast ... benutze 

[self.navigationController presentViewController:controller animated:YES completion:nil];
23
TonyMkenu

Verwenden Sie das folgende Snippet, um dies ab iOS 8 zu tun:

Für Ziel C:

UIViewController *walkThru = [self.storyboard   instantiateViewControllerWithIdentifier:@"WalkThroughScene"];
walkThru.providesPresentationContextTransitionStyle = YES;
walkThru.definesPresentationContext = YES;
[walkThru setModalPresentationStyle:UIModalPresentationOverCurrentContext];
[self.navigationController presentViewController:walkThru animated:YES completion:nil];

Für Swift:

let viewController : XYZViewController =     self.storyboard!.instantiateViewControllerWithIdentifier(“XYZIdentifier”) as! XYZViewController
viewController.providesPresentationContextTransitionStyle = true
viewController.definesPresentationContext = true
viewController.modalPresentationStyle=UIModalPresentationStyle.OverCurrentContext
self.presentViewController(viewController, animated: true, completion: nil)

Die Hintergrundfarbe Ihres präsentierten viewControllers sollte clearColor sein.

104
pankaj

Wenn Sie möchten, dass sich Ihre modalVC über der Tab-Leiste befindet, müssen Sie den Präsentationsstil als UIModalPresentationOverFullScreen definieren.

[_presentedViewController setModalPresentationStyle:UIModalPresentationOverFullScreen];

[_presentingViewController presentViewController:_presentedViewController animated:YES completion:nil];
3
dorian

Kopieren Sie in der PresentingViewController den folgenden Code unter Storyboard-Auswahl oder IBAction. 

SecondViewController *viewController = [self.storyboard   instantiateViewControllerWithIdentifier:@"secondViewController"];
//SecondViewController *viewController = [SecondViewController alloc]init]; // if you are adding the viewcontroller programatically
viewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
    [viewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentViewController:viewController animated:YES completion:nil];

In der zweiten ViewController führen Sie die folgenden Schritte entweder nach Storyboard oder über Code aus:

  1. Stellen Sie die Hintergrundfarbe (self.view) der Ansicht auf Clearcolor ein und reduzieren Sie die Deckkraft auf 50%.
  2. Jetzt können Sie eine halbtransparente modale Ansicht realisieren
2
vigneshwaran s

Die schnelle Antwort ist, dass Sie keine transparente modale Ansicht präsentieren können, nicht mit der Methode presentViewController: animated: completion:. Weil Sie den Controller für modale Ansichten nicht transparent machen können (Ihre Ansicht ist darüber hinaus ein Platzhalter).

Sie können eine benutzerdefinierte Ansicht erstellen und sie manuell animieren. Auf diese Weise können Sie das erstellen, was Sie benötigen. 

2
Greg

Dies ist die UIWindow's-Farbe. Sie können die UIWindow-Farbe in appDelegate initiieren.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    return YES;
}
0
N.nnd