gpt4 book ai didi

ios - Swift:使用约束平移 UIImage

转载 作者:行者123 更新时间:2023-11-28 05:27:48 25 4
gpt4 key购买 nike

我的 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)
}

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

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

是否有使用约束移动图像的更好方法?是否可以使用第一种方法,然后根据最终位置更新 constraints ?如果操作正确,第二种移动 image 的方法会是什么样子?

最佳答案

一般来说,如果一个 View 有激活的自动布局约束,你不应该直接设置它的frame。这是因为下次布局引擎传递相关 View 时,您的更改将被覆盖,而您无法控制何时发生。

您更新相关约束的 constant 的解决方案是正确的。如果您发现自己经常这样做,您可能想要编写一个方法,它接受一个 CGPoint 和一个 View ,并更新相关的约束。

Can the first method be used and then the constraints updated afterwards based on the final position?

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

关于ios - Swift:使用约束平移 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30419843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com