Contrôleur de vue modale Swift avec fond transparent [dupliquer]

cette question a déjà une réponse ici:

je sais que ce sujet est très populaire, mais je suis un peu iniciate problème dans un langage de programmation, le fait est que je ne comprends toujours pas où je mets le code. Je dirai tout:

enter image description here

j'essaie de rendre un Swift modal un peu différent de la normale: en cliquant sur un bouton, le ViewController s'affiche (suivant le type modal) sur l'écran, mais avec un fond transparent. Seule la vue bleue avec étiquette sera affichée. Lorsque ce ViewController est présenté, il est avec fond transparent, mais dès qu'il complète la transition, il restera avec le fond noir. Déjà désactivé l'option opaque, et testé quelques options, mais rien de ce dépannage.

Certains peuvent m'aider?

la vidéo est un test dans le simulateur sur le boîtier ( https://www.youtube.com/watch?v=wT8Uwmq9yqY ).

je commence avec swift, et je suis encore assez perdu avec la façon de programmer en Xcode, j'ai lu une réponse à une question qui a le code suivant pour résoudre ceci:

self.presentingViewController.providesPresentationContextTransitionStyle = YES;
self.presentingViewController.definesPresentationContext = YES;
modal.modalPresentationStyle = UIModalPresentationOverCurrentContext;

Où dois-je mettre ce code?

81
demandé sur AmitaiB 2015-10-13 17:01:20

1 réponses

Vous pouvez le faire comme ceci:

dans votre contrôleur de vue principale:

func showModal() {
    let modalViewController = ModalViewController()
    modalViewController.modalPresentationStyle = .overCurrentContext
    presentViewController(modalViewController, animated: true, completion: nil)
}

dans votre contrôleur de vue modale:

class ModalViewController: UIViewController {
    override func viewDidLoad() {
        view.backgroundColor = UIColor.clearColor()
        view.opaque = false
    }
}

si vous travaillez avec un storyboard:

il suffit d'ajouter une séquence Storyboard avec Kind réglé sur Present Modally à votre contrôleur de vue modale et sur ce contrôleur de vue, valeurs suivantes:

  • Background = Couleur Claire
  • dessin = décocher la case Opaque
  • Présentation = Plus De Contexte Actuel

comme Crashalot fait remarquer dans son commentaire: assurez-vous que le suit n'utilise Default que pour Presentation et Transition . L'utilisation de Current Context pour Presentation fait le tour modal noir au lieu de rester transparent.

208
répondu joern 2017-09-24 09:25:39