繁体   English   中英

Swift:使用约束平移UIImage

[英]Swift: Pan UIImage using constraints

我的viewController中有一个UIImage ,正在使用UIPanGesture 我目前正在根据RayWenderlich教程使用以下代码来移动它。

@IBAction func panImage(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)

if let view = sender.view {
        view.center = CGPoint(x:view.center.x + translation.x,
            y:view.center.y + translation.y)
        exitButton1.center = CGPoint(x:exitButton1.center.x + translation.x, y:exitButton1.center.y + translation.y)
    } 
sender.setTranslation(CGPointZero, inView: self.view)
}

我正在为此应用程序使用auto layout ,并被告知应改为使用autoLayoutConstraints移动UIImage 我更改为以下代码来移动image ,但是图像现在在整个屏幕上跳跃。

let translation = sender.translationInView(self.view)
image1ConstraintX.constant = image1ConstraintX.constant + translation.x
image1ConstraintY.constant = image1ConstraintY.constant + translation.y

有没有使用constraints移动image的更好方法? 可以使用第一种方法,然后根据最终位置更新constraints吗? 如果正确完成,第二种移动image方法会如何?

一般来说,如果视图具有有效的自动布局约束,则不应直接设置其frame 这是因为您的更改将在下次布局引擎对相关视图进行传递时被覆盖,并且您无法控制何时进行更改。

您更新相关约束constant的解决方案是正确的。 如果您发现自己做了很多事情,则可能需要编写一个使用CGPoint和视图并更新相关约束的方法。

可以使用第一种方法,然后根据最终位置更新约束吗?

是的,但是您可能不想这么做。 为此,您将删除或禁用约束,在用户平移时修改frame ,并在用户完成平移后,在每个约束上设置constant ,然后重新启用布局约束。 这将比必需的更为复杂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM