作为学习Swift和iOS开发的练习,我决定制作Breakout游戏。一开始我遇到了一个简单的问题,我无法找到一个简单的解决方案。
我从桨开始。我创建了一个 A B C D
1 Lower Limit Upper Limit # Data
2 30S 40S A1234 30A
3 30S 40S A2345 30S
4 30S 40S A1256 30S
,它将成为游戏的容器。我还创建了gameView
并添加了将paddle放在正确位置的约束。这就是我所拥有的:
我还添加了一个平移手势识别器,用于定位球拍的paddleView
位置。
问题在于:当我改变方向时,不管改变前的位置如何,桨都会移动到中心位置。
我尝试创建center.x
的插座,在Center X Alignment Constraint
中将其删除,然后恢复viewWillTransitionToSize
中的先前位置,但划线viewDidLayoutSubviews
始终为0。我也尝试修改约束,可能会更改origin.x
,但仍然不成功。
我知道这是一个简单的解决方案,但我无法找到它。
有人可以帮忙吗?
答案 0 :(得分:0)
您不应该在平移手势处理程序中修改view center.x,因为您的约束将会中断。相反,你应该创建约束出口(假设为约束:view.center.x等于superview.center.x)并在pan处理程序中更改其常量值。
@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
}
}