[Résolu] Transition fadeIn/fadeOut entre deux views (deux écrans)

busterTheobusterTheo Membre
avril 2015 modifié dans API UIKit #1

Bonjour à  tous,


je souhaite (en SWIFT) faire un écran d'accueil (genre simplement une image) qui, au lancement de l'appli, apparait en fadeIn, puis disparait en fadeOut après quelques instants, pour faire apparaitre ensuite le début de l'appli. Donc, en gros l'image d'accueil est visuellement par-dessus le début de l'appli, et je cherche à  faire une simple transition avec la propriété alpha.


 


Depuis trois jours, j'ai visualisé des tonnes de codes et de vidéos, et je trouve pleins de trucs plus ou moins complexes, concernant les animations (avec alpha) de views dans une views (ce que je ne désire pas), ou bien des animation entre deux views différentes (ce que je désire), mais sans alpha.


 


Je suis totalement perdu et embrouillé.


 


Si quelqu'un a une idée simple, ce serait génial, car cela concerne le début de mon appli, et je suis donc bloqué pour la suite.


 


Merci d'avance. 


Réponses

  • Hello,


     


    Je suppose que chaque écran est géré par UIViewController. Si c'est le cas tu peux faire ça facilement, si tu est sur iOS 7 minimum, avec les custom transitions.


     


    Voici quelque liens qui vont t'aider :


     


    http://asciiwwdc.com/2013/sessions/218


    http://www.objc.io/issue-5/view-controller-transitions.html


    http://www.teehanlax.com/blog/custom-uiviewcontroller-transitions/


  • CéroceCéroce Membre, Modérateur
    Si tu ajoutes une image en vue fille, qui fait la même dimension, comme elle a été ajoutée après, elle apparaà®tra devant, et tu pourras la rendre transparente en animant son alpha.

    Je ne saisis pas vraiment ton problème, parce que j'ai l'impression que tu as déjà  compris tout ça. As-tu une contrainte supplémentaire ? Tu dis que tu ne veux pas faire de transitions entre deux vues.
  • Merci pour vos remarques.


    C'est vrai que je me marche un peu dessus. J'ai trop lu de code (beaucoup de trucs en américain et objC), et j'ai mal à  la tête.


     


    Ben, en gros, l'idéal, serait effectivement, une vie fille, puis alpha tranquille in et out, mais il faut que cela ne se fasse qu'à  l'entré dans l'appli, et plus jamais, une fois dans l'appli.


     


    Je crois que je vais essayer un truc à  partir de ça. Mais j'ai peur que cela ne soit pas très propre d'afficher une view à  l'entrée, puis de la masquer pour toujours, non ? A voir...


  • Hello,


    bon, ben j'ai fait ça, et ça marche.



    import UIKit

    class ViewController: UIViewController {

    var imageView: UIImageView!

    override func viewDidLoad() {
    super.viewDidLoad()

    imageView = UIImageView(frame: CGRectMake(0, 0, 1024, 768))

    self.imageView.image = UIImage(named: "intro.jpg")
    self.imageView.alpha = 1.0
    self.view.addSubview(imageView)

    }

    override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    UIView.animateWithDuration(3.0, delay: 2.0, options: nil, animations: {
    self.imageView.alpha = 0.0
    }, completion: nil)
    }

    Reste maintenant, à  intégrer tout le reste de l'appli, et là , on va rire.


     


    Merci encore.


     


    Je met résolu


  • DrakenDraken Membre
    avril 2015 modifié #6

    La masquer après l'animation ?? Pourquoi ne pas la détruire, tout simplement ? Tu la retires de l'écran avec removeFromSuperView() et basta..

  • Ah ouais, trop cool.


     


    J'ai rajouter le callback, enfin le completion



    UIView.animateWithDuration(3.0, delay: 2.0, options: nil, animations: {
    self.imageView.alpha = 0.0
    }, completion: {
    (finished: Bool) -> Void in
    self.imageView.removeFromSuperview()
    }
    )

    C'est bien comme ça qu'il faut faire ?


  • AliGatorAliGator Membre, Modérateur
    Yep.
  • Ah, génial. Merciiiiiiiii


Connectez-vous ou Inscrivez-vous pour répondre.