我有一个目标视图(蓝色视图和红色视图用于左上角位置)。我试图用手指移动这个视图。如果视图不旋转,一切都很好。 但是当我旋转视图并移动时,第一次就可以了。但从第二次开始,视角从手指位置反弹是很奇怪的。
我正在使用连接来组合变换。
targetView.transform = CGAffineTransform(translationX: touchPosition.x, y: touchPosition.y).concatenating(CGAffineTransform(rotationAngle:radian))
我不熟悉变形,数学不是我的好。旋转真的会影响翻译(移动)吗?还是我误解了什么?如何解决?
答案 0 :(得分:0)
您可以使用anchorPoint
上的CALayer
更改视图将围绕其转动的点。
view.layer.anchorPoint = CGPoint(0.5, 0.5)
答案 1 :(得分:0)
根据Apple的说法,如果要移动UIView,则不应应用转换。相反,您需要移动视图的中心点。
因此,您需要做的是在PanGesture开始时保存视图的center
,然后将center
移动PanGesture的平移点。尝试这样的事情:
if sender.state == .began {
panGestureStartLocation = view.center
} else {
let translation = sender.translation(in: view)
view.center = CGPoint(x: panGestureStartLocation.x + translation.x, y: panGestureStartLocation.y + translation.y)
}