这听起来可能很有趣,但我花了几个小时尝试使用 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); //do the rotation 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)]; } }
理想情况下,我可以利用一个数值来告诉我旋转是正数还是负数。
最佳答案
如果旋钮的中心点是您用于旋钮的图像的中心,那么您应该能够检测到触摸是否从中心的左侧/右侧开始并向上/向下移动。如果触摸从左侧开始并向下移动,则它会向左旋转。对于从中心另一侧开始的触摸,反之亦然。您可以通过将连续的 x 坐标放在 touchesDidMove 方法中的数组中并进行简单比较来检测触摸是向上还是向下移动。
关于objective-c - 在 touchesMoved 上获取 UIView 的旋转方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2474491/