通过拖动旋转视图

时间:2016-11-20 04:25:19

标签: ios swift uiview swift3

我一直在尝试实现一种动画,当用户拖动屏幕时,视图会旋转一个点。我已经实现了控制旋转的部分(与此问题相关的部分)。如果您愿意,可以查看我拥有的所有代码here(简称)。

控制轮播的代码主要位于touchesBegantouchesMoved

var p = CGPoint.zero
// ...
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    p = (touches.first?.location(in: self))!
}

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    let dev = p.x - (touches.first?.location(in: self).x)!
    let angle = 2 * CGFloat(M_PI) - atan(dev / p.y)
    self.transform = CGAffineTransform(rotationAngle: angle)
}

现在问题是:当我的手指拖动到视图的初始中间(旋转前的中间)之下时,它完全正常;然而,当我的手指拖动到视图的初始中间上方时,视图旋转到错误的量,并且它在两个位置之间来回快速跳跃,所以看起来有一个视图的副本。

由于我的一般数学/逻辑或我的实现,我不知道它是否不起作用。

当我在视图的初始中间拖动时,为什么它无法正常工作?如何解决?

0 个答案:

没有答案