2015-05-18 44 views
3

作爲學習Swift和iOS開發的練習,我決定製作Breakout遊戲。剛開始的時候我遇到了一個簡單的問題,我找不到一個簡單的解決方案。修改限制

我從槳開始。我創建了gameView這將是遊戲的容器。我還創建了paddleView並增加了將槳放在正確位置的約束條件。下面是我有:

enter image description here

我還添加了鍋手勢識別用來定位槳的center.x位置。

問題出在這裏:當我改變方向時,無論改變之前的位置如何,槳板移動到中心位置。

enter image description here enter image description here

我試圖創建Center X Alignment Constraint的出口,在viewWillTransitionToSize移除,並恢復在viewDidLayoutSubviews以前的位置,但槳的origin.x總是0。我也嘗試修改的約束,也許改變multiplier,但仍然不成功。

我知道有一個簡單的解決方案,但我找不到它。

任何人都可以幫忙嗎?

回答

0

您不應該在您的平移手勢處理程序中修改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 
    } 

}