通过触摸校准旋转速度

Posted

技术标签:

【中文标题】通过触摸校准旋转速度【英文标题】:Calibrate rotation speed with touch 【发布时间】:2014-09-06 09:00:14 【问题描述】:

我正在使用以下方式旋转视图:

override func touchesMoved(touches: NSSet, withEvent event: UIEvent) 
        for touch in touches
        rotatableView.transform = CGAffineTransformMakeRotation(degreesToRadian(i++))
        
    

无论如何,我可以用移动触摸的速度来校准这个旋转吗?

【问题讨论】:

【参考方案1】:

据我了解,您希望 UIImageView 与您的手指一样快地旋转,换句话说,您的意思是“我的手指移动的速度有多快,旋转的速度有多快”。

从这个意义上说,这里是代码

override func touchesMoved(touches: NSSet, withEvent event: UIEvent) 
    let t = touches.anyObject() as UITouch
    let position = t.locationInView(self.view)

    let target = rotatableView.center        
    let angle = atan2(target.y-position.y , target.x-position.x)
    rotatableView.transform = CGAffineTransformMakeRotation(angle)


atan2 是一个数学函数,你可以阅读更多关于它的信息here

【讨论】:

以上是关于通过触摸校准旋转速度的主要内容,如果未能解决你的问题,请参考以下文章

iOS OpenGL ES 2.0 GLKit GLKMatrix4 触摸结束后旋转

压力校准仪开发日志--2017-10-30-2

旋转速度为提升速度的一倍是啥意思

gt911触摸屏边缘一部分区域不响应触摸

Swift:你如何使用 UIPanGestureRecognizer 获得每次触摸的速度?

Android加速度计校准?