UIView Transition en vue de table

Je veux faire la transition d'une vue à l'intérieur d'une cellule de vue de table. Plus précisément, lorsque l'user clique sur un button dans UITableViewCell, une vue doit glisser du côté droit de la cellule et cette vue doit revenir à sa position d'origine lorsque l'user clique sur un button dans la vue glissante. Je pourrais faire tout ceci excepté l'animation d'envoyer la vue glissée à sa position originale.

Pour accomplir ceci, j'ai créé un file xib pour la cellule vue de la table qui contient deux vues côte à côte, soit view1 et view2. Lorsque la tableview est chargée à l'écran, seul view1 est visible pour l'user. Et définissez la contrainte de mise en forme automatique pour view1.trailingedge et view2.leadingedge sur 0, la contrainte est connectée à cell.swift et nommée leftConstraint. Maintenant, quand un button dans view1 est cliqué, view2 glisse du côté droit de la cellule en utilisant le code suivant: –

self.view2.transform = CGAffineTransformMakeTranslation(UIScreen.mainScreen().bounds.width, 0) UIView.animateWithDuration(0.4, animations: { () -> Void in self.view2.transform = CGAffineTransformIdentity self.leftConstraint.constant -= UIScreen.mainScreen().bounds.width }) 

Lorsque essayé de renvoyer view2 à son ancienne position (cela devrait se produire sur le clic d'un button dans view2) ie. Le côté droit de l'animation de la cellule ne fonctionne pas, tous les éléments de view2 disparaissent. En utilisant le code suivant pour envoyer la vue sur le côté droit de la cellule: –

 self.view2.transform = CGAffineTransformMakeTranslation(UIScreen.mainScreen().bounds.width, 0) UIView.animateWithDuration(0.4, animations: { () -> Void in self.view2.transform = CGAffineTransformIdentity self.leftConstraint.constant += UIScreen.mainScreen().bounds.width }) 

Merci d'avance pour votre aide. Et spécial Merci à @MarkHim pour aider.

Puisque vous avez besoin de la transformation de la position rightOut deux fois, d'abord pour l'animation in-in et ensuite pour l'animation out, vous pouvez l'save dans une variable comme rightOutTransform . Essayer:

 CGAffineTransform rightOutTransform = CGAffineTransformMakeTranslation(self.view.fame.size.width, 0); // assuming view2 is currently in the cell UIView.animateWithDuration(0.4, animations: { self.view2.transform = rightOutTransform // }) 

Vous pouvez penser à supprimer les vues dont vous n'avez plus besoin de la hiérarchie de vue comme ceci lorsque l'animation est terminée

 view2.removeFromSuperview();