0

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

车轮

    CGFloat topPositionAngle = radiansToDegrees(atan2(view.transform.a, view.transform.b));
  1. -180 - 粉红色
  2. -120 - 蓝色
  3. -60 - 橙色
  4. 0 - 紫色
  5. 60 - 黄色
  6. 120 - 绿色

现在 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

4

2 回答 2

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;

使用这样的东西。希望这有帮助你应该知道接触点和你的具体点

于 2012-11-21T11:53:46.170 回答
0

你需要知道的触摸点角度:

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

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

然后你就可以变形了。

于 2012-11-23T06:11:44.290 回答