objective-c - 在 touchesMoved 上获取 UIView 的旋转方向

标签 objective-c uiview rotation trigonometry

这听起来可能很有趣,但我花了几个小时尝试使用 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/

相关文章:

ios - 快速覆盖UIView的init方法

ios - 如何在 tabbarcontroller 中旋转一个 View ?

iphone - 如何在 3G 手机上加快第一次 View 转换的速度?

ios - 如何在 ios 中管理 facebook 集成中的 session

ios - 如何修复 iOS Storyboard 中的不等式约束模糊性?

每次按下按钮时jquery css连续旋转90度

c# - 如何在Windows Phone 8 中连续旋转?

带有嵌套 JSON 数组的 iOS NSPredicate

iphone - iOS:点击 TableView 中行的计数器

ios - 在 Storyboard中使用自动布局使 UIButtons 居中