Modification des contraintes

Comme un exercice pour apprendre le développement Swift et iOS, j'ai décidé de faire le jeu Breakout . Dès le début j'ai rencontré un problème simple, que je ne peux pas find une solution simple pour.

J'ai commencé avec la pagaie. J'ai créé un gameView qui sera le conteneur pour le jeu. J'ai également créé le paddleView et ajouté des contraintes qui mettront la pagaie dans la bonne position. Voici ce que j'ai:

entrez la description de l'image ici

J'ai également ajouté un système de reconnaissance de center.x panoramique qui positionne la position center.x la pagaie.

Voici le problème: lorsque je change d'orientation, la palette se déplace au centre quelle que soit la position avant le changement.

entrez la description de l'image icientrez la description de l'image ici

J'ai essayé de créer une sortie de Center X Alignment Constraint , en l'enlevant dans viewWillTransitionToSize , et en restaurant la position précédente dans viewDidLayoutSubviews mais l' origin.x de origin.x était toujours 0. J'ai également essayé de modifier la contrainte, en changeant peut-être le multiplier , mais sans succès.

Je sais qu'il y a une solution simple à cela, mais je ne peux pas le find.

Quelqu'un peut-il aider?

Vous ne devez pas modifier view center.x dans votre gestionnaire de mouvements, car vos contraintes seront rompues. Au lieu de cela, vous devriez créer une sortie de contrainte (disons pour constraint: view.center.x égal à superview.center.x) et changer sa valeur constante dans votre gestionnaire de panoramique.

 @IBOutlet weak var centerAlignment: NSLayoutConstraint! @IBAction func handleDrag(sender: UIPanGestureRecognizer) { let xPosition = sender.locationInView(self.view).x if xPosition >= 0 && xPosition <= self.view.frame.size.width{ centerAlignment.constant = xPosition - self.view.frame.size.width / 2 } else if xPosition > self.view.frame.size.width { centerAlignment.constant = self.view.frame.size.width / 2 } else { centerAlignment.constant = -self.view.frame.size.width / 2 } }