Animation/Déplacer des points de vue le cadre de l'utilisation de la mise en page automatique
Je veux déplacer une vue à partir d'une position à l'autre, je peux le mettre en œuvre à l'aide de
self.view.center = CGPointMake(100, 200);
cependant, si le projet est à l'aide de mise en forme automatique, puis la vue sera de retour à la position initiale après l'exécution:
[self.view.superview setNeedsLayout];
alors comment déplacer une vue à la nouvelle position?
Vous devez vous connecter pour publier un commentaire.
Vous devez modifier les contraintes si vous utilisez la mise en page automatique. Le chemin qui est suggéré est de faire une prise de courant dans votre vue-contrôleur de la contrainte, puis vous modifiez la constante de la contrainte. Si vous avez le temps je vous le conseille allez ici et de regarder la "Mise en page Automatique par Exemple" ou des "Meilleures Pratiques pour la maîtrise de la Mise en page Automatique". Ils m'ont aidé beaucoup. Je suppose que le point à retenir est que, avec mise en page automatique, vous n'avez plus à penser en termes d'images. Donc si ce réglage est le centre de tout ne marche pas avec mise en page automatique. Il est tout au sujet de la manière dont les vues sont liés les uns aux autres.
Avec
AutoLayout
activé, nous devrionsFORGET FRAMES
et seulementCONSIDER CONSTRAINTS
.Oui, pour l'animation aussi, vous ne pouvez plus modifier l'image ou du centre, la vue va revenir à leur position d'origine lors de la mise en page est appelé.Au lieu de cela, vous devriez
consider changing the constant value of the constraint
pour obtenir le même effet.Envisager une Interface Utilisateur comme l'image ci-dessous.J'ai un affichage de l'image avec un
20 points leading space from it's superview
qui signifie qu'il a un espace horizontal contrainte c'est superview.J'ai aussi trois autres contraintes liées à l'image de la vue, haut, largeur et hauteur.Je vais vous montrer comment nous pouvons animer l'image de la gauche vers la droite comme indiqué dans l'image.
Créer IBOutlet pour la contrainte nous avons besoin pour animer.Ici, nous prenons seulement l'espace horizontal de la contrainte, ce qui est suffisant pour déplacer ce point de vue à partir de la gauche vers la droite.
À l'intérieur de
Go Away
action, nous avons besoin de mettre à jour la valeur de la constante de cette contrainte.Maintenant, la vue doit être déplacé à l'extrémité droite.Je fais juste que l'intérieur d'un bloc d'animation ainsi nous serons en mesure de voir une belle animation de gauche à droite et vice-versa.En Production, il ne faut pas coder en dur les valeurs de ce type.Faire juste ici pour faire de ce concept clair.
À l'intérieur de la
Come Back
action, nous sommes de nouveau la réinitialisation à l'arrière constante à la valeur de l'achat, de sorte que vous pouvez voir l'orange image de l'animation à son emplacement d'origine.[self.imageView layoutIfNeeded]
. ici, il dosn pas avoir une incidence, mais sur de vrais projets, il peut y avoir d'autres l'animation en run. si votre imageview doit khow final de votre image avant de l'animation.-(IBAction)moveBackAction:(id)sender { [self.imageView layoutIfNeeded]; self.horizontalSpaceConstraint.constant = 20; [UIView animateWithDuration:0.5 animations:^{ [self.imageView layoutIfNeeded]; }]; }