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,
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];
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.
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];
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:
self.view
) der Ansicht auf Clearcolor ein und reduzieren Sie die Deckkraft auf 50%.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.
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;
}