修改约束

作为学习Swift和iOS开发的练习,我决定制作Breakout游戏。 一开始我遇到了一个简单的问题,我找不到一个简单的解决方案。

我开始用桨。 我创建了一个gameView ,它将成为游戏的容器。 我还创建了paddleView并添加了将paddle放在正确位置的约束。 这就是我所拥有的:

在此处输入图像描述

我还添加了一个平移手势识别器,用于定位球拍的center.x位置。

问题在于:当我改变方向时,无论改变前的位置如何,桨都会移动到中心位置。

在此处输入图像描述在此处输入图像描述

我尝试创建Center X Alignment Constraint的sockets,在viewWillTransitionToSize删除它,并恢复viewDidLayoutSubviews先前位置,但paddle的origin.x始终为0.我也尝试修改约束,可能更改multiplier ,但仍然不成功。

我知道有一个简单的解决方案,但我找不到它。

有人可以帮忙吗?

您不应该在pan手势处理程序中修改view center.x,因为您的约束将会中断。 相反,您应该创建约束出口(假设为约束:view.center.x等于superview.center.x)并在平移处理程序中更改其常量值。

 @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 } }