2012-11-30 2 views
1

음,
나는 사진에서 이와 같은 원을가집니다.
내가 원하는 정도로 내 빨간 선을 회전하고 싶습니다.회전대와 같은 회전 회선

0에서 300도까지 원이 시작됩니다.

나는

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

으로 뭔가를 시작하지만,이 코드에서 0 값은 없습니다 아래에, 위에 있었다. 내가 삼각법의 천재 아니에요 아마 때문에
...

enter image description here

제대로 화살표를 회전하는 올바른 방법은 무엇입니까 :)?
각도 설정 값은 어떻게 설정됩니까?

감사합니다.

+0

처럼 상대 각도를 가질 수있다? – PeterWong

+0

을의 초기 프레임 무엇 화살표 레이어? – Moxy

+0

@Moxy는 특정 레이아웃이 없기 때문에 화면 중앙에 있습니다. 프레임은 저에게 무관합니다. 내게 이것을 묻는 이유 – elp

답변

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° 
0

당신은 값으로 150을 추가하려면이

// 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);