2012-02-06 126 views
0

有誰知道如何讓這段代碼停止旋轉過去xyz度的旋鈕,例如停止旋轉340度而不是360度旋轉所以你不能不停地把它轉過來?我正在嘗試製作一個可轉動的旋鈕。它可以工作,但目前它不會被夾住,所以有人可以繼續向前和向後轉動它。我想阻止它做到這一點,所以有一個最小值和最大值。停止旋轉過去xyz度並防止它從0度向後旋轉

- (void)rotating:(KTOneFingerRotationGestureRecognizer *)recognizer { 

    [self doRotation:recognizer.rotation];  
    [recognizer setRotation:0]; 
} 

- (void)doRotation:(float)rot { 

    CGFloat theAngle = atan2(knob.transform.b, knob.transform.a); 

    float temp_var = RADIANS_TO_DEGREES(theAngle); 

    if(temp_var < 0) temp_var = 360 - fabs(temp_var); 

    float percent = (temp_var/315) * 100; 
    float val = ((float)(percent))/100; 

    knob.transform = CGAffineTransformRotate([knob transform], rot); 

    if(percent < 100 && percent > 0) { 
     display.text = [[NSString alloc] initWithFormat:@"%.f", percent]; 
    } 
} 

回答

0

我有一個可旋轉的旋鈕的例子,你可以下載。它完全符合你的描述。

https://github.com/mattneub/Programming-iOS-4-Book-Examples/blob/master/convertedToIOS5/p618p635knob/p618p635knob/MyKnob.m

+0

鎖定這個偉大的工程!非常感謝!一個問題,但。我可以設置角度嗎?例如,如果當前的角度應該是3.5? – TayW 2012-02-06 05:05:51

+0

我不明白這個問題。不管你喜歡,你都可以修改這個例子。整個使用的「0」和「5」限制是任意的。 – matt 2012-02-06 05:10:18

+0

那麼我的意思是這個設置默認值?你可以說你旋轉旋鈕,然後退出應用程序,它會記住旋轉,並將其設置回最後一次打開應用程序時的位置。 – TayW 2012-02-06 05:14:57

0

你只是想停止旋轉,如果它大於340°?只要檢查temp_var是否大於340,然後退出該方法。您還應該考慮將其重命名爲degrees或者更明顯的是它是什麼。

if(temp_var < 0) temp_var = 360 - fabs(temp_var); 
// add this next line: 
if (temp_var > 340) { return; } 

float percent = (temp_var/315) * 100; 
+0

嘗試過,但,當我到達340℃,我不能旋轉,逆時針它只是在340° – TayW 2012-02-06 04:11:02