将车轮旋转到特定点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将车轮旋转到特定点相关的知识,希望对你有一定的参考价值。
在这个轮子里我们有6件。车轮的顶部是特定点。具体点给出了碎片的信息。现在它提供了蓝色部分的信息。因此,如果我点击其中一个例如紫色,我需要紫色片段去特定点并自动进入有关紫色片段的给定信息。
CGFloat topPositionAngle = radiansToDegrees(atan2(view.transform.a, view.transform.b));
- -180 - 粉红色
- -120 - 蓝色
- -60 - 橙色
- 0 - 紫色
- 60 - 黄色
- 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)];
}];
我们如何才能自动旋转到特定点?就像Danske Bank应用程序(请参阅以下youtube链接)类似于0:21 - 0:25分钟的视频。
答案
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;
使用这样的东西。希望这会有所帮助在这里你应该知道接触点和你的具体观点
另一答案
你需要知道触摸点角度:
CGFloat touchedPointAngle = atan2f(touchPoint.y - centerSuper.y, touchPoint.x - centerSuper.x) + M_PI;
if ((touchedPointAngle < sliceInRadians) && (touchedPointAngle > 0)) {
angleTransform = sliceInRadians;
} else if ...
然后你可以改造。
以上是关于将车轮旋转到特定点的主要内容,如果未能解决你的问题,请参考以下文章