80 votes

Comment utiliser presentModalViewController pour créer une vue transparente

J'affiche une vue modale avec

 [self presentModalViewController:controller animated:YES];
 

Lorsque la vue se déplace vers le haut de l'écran, elle est transparente conformément au paramètre défini dans le fichier xib à partir duquel elle est créée, mais une fois qu'elle remplit l'écran, elle devient opaque.

Est-il possible de garder la vue transparente?

Je suspecte que la vue sur laquelle elle est placée ne soit pas rendue, mais plutôt que la vue modale devienne opaque.

85voto

Après iOS 3.2 il existe une méthode pour le faire sans toutes les "astuces" – voir la documentation de la modalPresentationStyle de la propriété. Vous avez un rootViewController qui présentera le viewController. Voici donc le code de la réussite:

viewController.view.backgroundColor = [UIColor clearColor];
rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
[rootViewController presentModalViewController:viewController animated:YES];

Avec cette méthode, le viewController de fond sera transparent et le sous-jacent rootViewController sera visible. Veuillez noter que ceci ne semble fonctionner sur l'iPad, voir les commentaires ci-dessous.

63voto

Ben Gottlieb Points 59900

Votre vue est toujours transparente, mais une fois que votre contrôleur modal se trouve en haut de la pile, la vue derrière elle est masquée (comme c'est le cas avec n'importe quel contrôleur de vue le plus haut). La solution consiste à animer manuellement une vue vous-même; alors le behind-viewController ne sera pas caché (puisque vous ne l'aurez pas laissé).

48voto

midnightdavid Points 379

Ce que je devais obtenir ce travail :

24voto

Kristopher Johnson Points 34554

Pour ceux qui veulent voir des code, voici ce que j’ai ajouté à contrôleur du ma vue transparente :

16voto

Krumelur Points 11160

Il y a une autre option : avant d’afficher le contrôleur modal, capture une capture d’écran de la fenêtre entière. Insérez l’image capturée dans un UIImageView et ajouter l’affichage de l’image vue du contrôleur, que vous allez montrer. Puis mettre à l’arrière-plan. Insérez une autre vue au-dessus de la vue de l’image (fond noir, alpha 0,7). Voir la votre contrôleur modale et on dirait que c’était transparent. Juste essayé sur iPhone 4 en cours d’exécution iOS 4.3.1. Comme un charme.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X