2014-04-30 3 views
0

UISlider를 사용하여 +/- 각도를 0에서 180도 (pi)까지 회전하고 싶습니다. 제 문제는 직사각형이 0 또는 180 이상으로 회전한다는 것입니다.
필자는 각도가있는 상대적 UISlider 버튼 위치로 본질적으로 매핑해야합니다. 이 그것을 회전UI를 회전하는 방법 수정 +/- 각도보기?

- (IBAction)sliderAction:(UISlider *)sender { 
    static float datum = 0; 
    if (sender.value > 0 && sender.value < 10) { 
     float myValue = 0; 
     if (datum < sender.value) { 
      myValue = +0.1; 
     } else { 
      myValue = -0.1; 
     } 
     _gageStickView.transform = CGAffineTransformRotate(_gageStickView.transform, myValue); 
     datum = sender.value; 
    } 

을,하지만 난 그 위에 적절한 제어 할 수 없습니다 :

여기 (전화처럼) 한쪽 끝에서 UIView.layer의 앵커와 코드입니다.

질문 : UIView의 각도로 UISlider의 위치를 ​​어떻게 매핑 할 수 있습니까?
즉, 0 °에서 왼쪽 슬라이더, 90 °에서 중간 사이더, 180 °에서 오른쪽 슬라이더. 중간에.

+0

각도는 라디안으로 표시되므로 변경할 필요가없는 경우 회전 각도가 "이상합니다". – Larme

답변

1

@Larme과 마찬가지로 각도를 라디안으로 변환해야합니다.

- (IBAction)sliderValueChanged:(UISlider *)sender { 

    CGFloat degrees = (sender.value/sender.maximumValue) * 180; 
    CGFloat radians = degrees * M_PI/180; 

    self.label.transform = CGAffineTransformMakeRotation(radians);  
} 

이 코드는 값 10으로 고정되어 있지는 않지만 슬라이더의 최대 값을 기준으로 '백분율'이됩니다.

+0

그게 내가 원하는거야. 감사! –

+1

문제가 해결 되었다면 답을 수락 된 것으로 표시해주십시오. – fguchelaar