Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 修改约束_Ios_Swift_Autolayout - Fatal编程技术网

Ios 修改约束

Ios 修改约束,ios,swift,autolayout,Ios,Swift,Autolayout,作为学习Swift和iOS开发的练习,我决定制作这个游戏。一开始我遇到了一个简单的问题,我找不到简单的解决办法 我从划桨开始。我创建了一个gameView,它将成为游戏的容器。我还创建了桨叶视图,并添加了将桨叶置于正确位置的约束。以下是我所拥有的: 我还添加了一个平移手势识别器,用于定位桨的center.x位置 问题是:当我改变方向时,无论改变之前的位置如何,桨叶都会移动到中心 我尝试创建中心X对齐约束的出口,在视图中删除它,并在视图中恢复以前的位置,但桨的原点X始终为0。我还尝试修改约束

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

我从划桨开始。我创建了一个
gameView
,它将成为游戏的容器。我还创建了
桨叶视图
,并添加了将桨叶置于正确位置的约束。以下是我所拥有的:

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

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

我尝试创建
中心X对齐约束的出口,在
视图中删除它,并在
视图中恢复以前的位置,但桨的
原点X
始终为0。我还尝试修改约束,可能是更改了
乘数
,但仍然失败

我知道有一个简单的解决办法,但我找不到


有人能帮忙吗?

您不应该在平移手势处理程序中修改view center.x,因为您的约束将被打破。相反,您应该创建约束出口(比如约束:view.center.x equal 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
    }

}
@IBOutlet弱var中心对齐:NSLayoutConstraint!
@iAction func handleDrag(发送方:UIPangestureRecognitor){
设xPosition=sender.locationInView(self.view).x
如果xPosition>=0&&xPosition self.view.frame.size.width{
centerAlignment.constant=self.view.frame.size.width/2
}否则{
centerAlignment.constant=-self.view.frame.size.width/2
}
}