那么,
我在照片中有这样一个圆圈。
我想把我的红线旋转到我想要的程度。
圆圈从0到300度开始。
我开始用
做点什么CGFloat wAngle = Degrees2Radians([_Weight.text intValue]/300.0*360);
_Arrow.layer.transform = CATransform3DMakeRotation (wAngle + M_PI, 0, 0, 1);
但在此代码段中,0值位于顶部,而不是底部 可能是因为我不是三角学的天才...... :)
正确旋转箭头的正确方法是什么?
如何设置角度值?
感谢。
答案 0 :(得分: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°
答案 1 :(得分: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);