[Résolu] Problème d'animation et de sauvegarde après transition

RomheinRomhein Membre
octobre 2014 modifié dans API UIKit #1

Bonjour à  tous !


 


Voilà  j'ai un petit problème de compréhension générale...


 


1°/ Animation avec beginanimation:


 


Quand j'essaye de faire une animation avec cette méthode :



[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
vague.transform = CGAffineTransformMakeTranslation(171, 0);
[UIView commitAnimations];

j'ai une sorte de saut de mon UIImageView allant à  une sorte de position initiale avant de faire l'animation demandée. Ne trouvant vraiment pas de solution à  mon prob je suis allé voir une autre solution...


 


2°/ Animation avec animateWithDuration:


 


 


Quand j'anime cette fois avec cette méthode :



CGRect newFrame = vague.frame;
newFrame.origin.x += 171;

[UIView animateWithDuration:1.0
animations:^{
vague.frame = newFrame;
}];


celle-ci se déroule comme prévu mais lorsque via un autre bouton je fais apparaitre en modal un contrôler, contrairement à  la première solution la position de mes UIImageView reviens par défaut (j'ai même le temps de l'apercevoir pendant que le controller "monte"). 


 


Dans les deux cas l'UIImageView correspondant à  "vague" est instancié depuis le storyboard (si c'est bien ce qui se passe quand on lie un composant au .h ?).


 


 


Donc voila je suis un peu pommé et je sais pas trop d'où les problèmes viennent. Il y a plusieurs choses que j'ai encore du mal à  saisir, comme l'évolution de l'appli lorsqu'on fait appel un nouveau controller, comment sont gérés les instances par le stoyboard etc...


 


Merci par avance de votre aide :)


 


Romain


Réponses

  • AliGatorAliGator Membre, Modérateur
    Tu as essayé de jouer avec les options de la méthode un peu plus complète [UIView animationWithDuration:options:animations:completion:] ? En particulier des choses comme UIViewAnimationOptionBeginFromCurrentState etc ?
  • euh nan j'ai pas testé parce que la solution 2°/ fonctionnait, c'est à  dire que l'animation commençait bien au bon endroit. Le prob avec cette méthode c'est que quand j'affiche un nouveau controller, l'animation se remet au point de départ.


    C'est embêtant parce que j'ai un bouton pour faire l'animation inverse, et quand j'appuie dessus , vu que c'est revenu à  l'état initial (après avoir dissmiss la modalview), l'animation va dans le mauvais sens forcement ^^


    Ce problème je l'ai pas avec la méthode 1°/, disons que la vue "garde" en mémoire l'état des UIImageView dans lesquels je les ai laissé...


  • Finalement j'ai trouver comment réglé le problème sans trop savoir pourquoi ça le règle...


    Il faut désactiver l'autolayout pour que les animations restent à  leur place après avoir affiché une autre vue. 

  • CéroceCéroce Membre, Modérateur
    octobre 2014 modifié #5
    L'autolayout modifie les frames des vues. Si tu déplaces les frames avec une animation, y'a comme qui dirait un conflit ;-)
    On peut animer les NSLayoutConstraints.
Connectez-vous ou Inscrivez-vous pour répondre.