将车轮旋转到特定点

时间:2012-11-10 19:25:33

标签: ios rotation transform

在这个轮子里我们有6件。车轮的顶部是特定点。具体点给出了碎片的信息。现在它提供了蓝色部分的信息。因此,如果我点击其中一个例如紫色,我需要紫色片段去特定点并自动进入有关紫色片段的给定信息。

Wheel

    CGFloat topPositionAngle = radiansToDegrees(atan2(view.transform.a, view.transform.b));
  1. -180 - 粉红色
  2. -120 - 蓝色
  3. -60 - orange
  4. 0 - 紫色
  5. 60 - 黄色
  6. 120 - 绿色
  7. 现在topPositionAngle显示-120 =蓝色,当紫色到达特定点时显示为0.

        UITouch *touch = [touches anyObject];
        CGPoint currentTouchPoint = [touch locationInView:view];
        CGFloat currentAngle = radiansToDegrees(atan2(currentTouchPoint.x, currentTouchPoint.y));
    
        CGFloat angleTransform = ???
        CGAffineTransform current = view.transform;
        [UIView animateWithDuration:0.2f animations:^{
            [view setTransform:CGAffineTransformRotate(current, angleTransform)];
        }];
    

    我们如何才能自动旋转到特定点?就像 Dansk Bank 应用程序(请参阅以下youtube链接)类似于0:21 - 0:25分钟内的视频。

    http://www.youtube.com/watch?v=hulBh_KNGjE

2 个答案:

答案 0 :(得分:0)

float fromAngle = atan2(m_locationBegan.y-img.center.y, m_locationBegan.x-img.center.x);
float toAngle = atan2(_location.y-imgDigits.center.y, _location.x-img.center.x);
float newAngle = wrapd(m_currentAngle + (toAngle - fromAngle), 0, 2*3.14);
angle = newAngle;

CGAffineTransform transform = CGAffineTransformMakeRotation(newAngle);
img.transform = transform;

使用类似的东西。希望这可以帮助 在这里你应该知道触点和你的具体观点

答案 1 :(得分:0)

你需要知道触摸点角度:

CGFloat touchedPointAngle = atan2f(touchPoint.y - centerSuper.y, touchPoint.x - centerSuper.x) + M_PI;

if ((touchedPointAngle < sliceInRadians) && (touchedPointAngle > 0)) {
        angleTransform = sliceInRadians;
} else if ...

然后你可以改造。