我有一个圆形UIView
我可以用UIPanGestureRecognizer
在屏幕上移动。在.Changed
期间,UIView
会被用户的手指移动。我什么都没有。为了#E ;;Ended'。我希望用户能够轻弹UIView,并在用户抬起手指后继续使用它的路径。路径的长度取决于平底锅的速度。
这可能与我目前的.Changed
实施有关吗?如何计算UIView
的最终位置?
答案 0 :(得分:0)
查看CGAffineTransform的official documentation,您会发现以下段落:
让我们将其翻译为代码:
let transform = self.view.transform
let xPosition = transform.a * transform.tx + transform.c * transform.ty + transform.tx
let yPosition = transform.b * transform.tx + transform.d * transform.ty + transform.ty
let targetTransform = self.transform(view: self.view,
for: CGPoint(x: xPosition, yPosition))
然后我们可以将计算出的CGAffineTransform
应用于我们的UIView
:
UIView.animate(withDuration: 0.2) {
self.view.transform = targetTransform
}
请记住,动画持续时间未考虑当前速度。要获得更自然的行为,请考虑看看UIKit Dynamics。