我有下面的代码是一种把ImageView的并旋转它在它的父触摸:转换弧度度
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
var touch: AnyObject? = event.allTouches()?.anyObject()
var location = touch!.locationInView(touch!.view)
var dx: Float = Float(location.x - hsbWheel250ImageView.center.x)
var dy: Float = Float(location.y - hsbWheel250ImageView.center.y)
var radians = atan2f(dy, dx)
//deltaAngle is set in touchesBegan
var angleDiff = deltaAngle - radians
hsbWheel250ImageView.layer.transform = CATransform3DMakeRotation(-angleDiffCGFloat, 0, 0, 1)
//This is where my problem is
var angleDiffCGFloat = CGFloat(deltaAngle - radians)
var angleInDegrees = angleDiffCGFloat * (180.0/Float(M_PI))
println(angleInDegrees)
//For the first 180 degrees of the rotation angleInDegrees returns the correct
//number i.e. 0-180. But then after 180, where it should return 181,
//it returns -179. Where it should return 270 it returns -90 and so on
//and so forth..
我一直在试图谷歌在我的方式,但唯一的解决办法的人(从弧度转换为度数时)是上面那个......我认为这只是一个数学问题,但恐怕我的大脑已经关闭了这个问题。
任何帮助,非常感谢。
ANSWER 对于那些有兴趣,答案是下面
var angleInDegrees = fmodf(360.0 + -angleDiff * (180.0/Float(M_PI)), 360.0)
#1不是一个论坛。既然您已经回答了您的问题,请将答案作为实际答案加入,而不是编辑您的问题。 – dandan78 2014-09-28 08:32:42