1

好吧,
我在照片中有一个这样的圆圈。
我想将我的红线旋转到我想要的程度。

圆从 0 到 300 度开始。

我开始做一些事情

CGFloat wAngle = Degrees2Radians([_Weight.text intValue]/300.0*360);
_Arrow.layer.transform = CATransform3DMakeRotation (wAngle + M_PI, 0, 0, 1);

但在这个片段中,0 值在顶部,而不是在底部。
可能是因为我不是三角学天才...... :)

在此处输入图像描述

正确旋转箭头的正确方法是什么?
角度值如何设置?

谢谢。

4

2 回答 2

2

您不需要转换度数和弧度。你有一个相对价值:

CGFloat relativeAngle = [_Weight.text intValue] / 300.0;

所以只需使用它:

_Arrow.layer.transform = CATransform3DMakeRotation(relativeAngle * M_PI*2, 0, 0, 1);

如果开始错误,只需更改视图的初始位置。(或将错误的角度总结为新的角度。像(relativeAngle * M_Pi*2 + correction).

// what PI means in degrees
M_PI * 2 = 360°  
M_PI     = 180°  
M_PI_2   = 90°  
M_PI_4   = 45°  
于 2012-11-30T11:24:09.587 回答
0

你可以有这样的相对角度

// transform your degrees (0->300) to radians
// (considering your starting direction is at M_PI*3/2)
CGFloat relativeAngle = - [_Weight.text intValue] * M_PI / 150.0;

_Arrow.layer.transform = CATransform3DMakeRotation(relativeAngle, 0, 0, 1);
于 2012-11-30T11:42:10.837 回答