iOS: ModalView avec fond transparent?

Je veux montrer un modalview sur un viewController. (qui a un controller de navigation).

À mon avis j'ai du text, et un button pour montrer le modalview.

J'ai créé un .xib qui contenait mon modalview (c'est une vue avec une image et un label).

Quand je le montre, avec ça:

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]; 

J'ai mon modalview, MAIS, l'arrièreplan devient noir .. et je veux toujours voir le text sur ma vue. (J'ai essayé de définir l'alpha, etc., mais RIEN ne fonctionne: '()

Quelqu'un pour m'aider?

Merci,

    vous pouvez vérifier l'exemple iOS7 (voir mon comm) ou vous pouvez simplement essayer ceci:

    enlever cette ligne de votre "présentation" méthode

     controller.view.backgroundColor = [UIColor clearColor]; 

    maintenant, dans viewDidLoad du ShareController ajoutez:

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

    PS

    si vous avez un controller de navigation … utilisez

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

    Utilisez l'extrait suivant pour le faire sur iOS 8 et suivants:

    Pour l'objective C:

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

    Pour 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) 

    Et la backgroundcolor de votre viewController présenté doit être clearColor.

    Si vous voulez que votre modalVC soit sur la barre d'tabs, vous devez définir le style de présentation comme UIModalPresentationOverFullScreen

     [_presentedViewController setModalPresentationStyle:UIModalPresentationOverFullScreen]; [_presentingViewController presentViewController:_presentedViewController animated:YES completion:nil]; 

    La réponse rapide est que vous ne pouvez pas présenter une vue modale transparente, pas avec la méthode presentViewController: animation: completion:. Parce que vous ne pouvez pas rendre le controller de vue modale transparent (votre vue est placée sur cela).

    Vous pouvez faire une vue personnalisée et vous pouvez l'animer manuellement, c'est une façon de créer quelque chose dont vous avez besoin.

    Dans le PresentingViewController copyz le code ci-dessous sous Segment Storyboard ou 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]; 

    Dans le second ViewController effectuez les étapes suivantes, soit par storyboard, soit par code:

    1. Définir la self.view fond ( self.view ) de la vue sur clearcolor et réduire l'opacité à 50%
    2. Vous pouvez maintenant réaliser une vue modale semi-transparente

    C'est la couleur de l' UIWindow's , vous pouvez UIWindow couleur UIWindow dans appDelegate.

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

    Réponse de Swift 3 Pankaj:

      let stb = UIStoryboard(name: YOUR_STORYBOARD, bundle: nil) let vc = stb.instantiateViewController(withIdentifier: YOUR_POPUP_IDENTIFIER) vc.providesPresentationContextTransitionStyle = true vc.definesPresentationContext = true vc.modalPresentationStyle=UIModalPresentationStyle.overCurrentContext self.present(vc, animated: true, completion: nil)