这可能听起来有点滑稽,但我花了几个小时用UIView和一些三角函数尝试重新创建一个具有逼真旋转的旋钮。我实现了这个目标,但现在我不知道如何确定旋钮是向左旋转还是向右旋转。数学中最相关的部分如下:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint pt = [touch locationInView:self];理想情况下,我可以利用一个数字值告诉我旋转是正数还是负数。
float dx = pt.x - iv.center.x; float dy = pt.y - iv.center.y; float ang = atan2(dy,dx);
//进行旋转 if (deltaAngle == 0.0) { deltaAngle = ang; initialTransform = iv.transform; }else { float angleDif = deltaAngle - ang; CGAffineTransform newTrans = CGAffineTransformRotate(initialTransform, -angleDif); iv.transform = newTrans; currentValue = [self goodDegrees:radiansToDegrees(angleDif)]; } }