2012-02-06 11 views
0

このコードでxyzを過ぎて回転しないようにノブを止める方法はありますか?あなたは常にそれを周り続けていくことができないのですか?私は回転可能なノブを作ろうとしています。それは動作しますが、現在はクランプされていないので、誰かが完全な円で前方と後方に向けることができます。私はそれをしないようにしたいので、最小値と最大値があります。ノブを止めて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

でロックされている反時計回りに回転することはできません!どうもありがとうございます!しかし、1つの質問。角度を設定することはできますか?例えば、現在の角度が3.5の場合は? – TayW

+0

私はその質問を理解していません。ただし、好きなようにサンプルを変更することができます。全体を通して使用される「0」および「5」限界は任意である。 – matt

+0

私が言っていることは、デフォルト値を設定しているということですか? umは、ノブを回してアプリケーションを終了すると、回転を覚えて、アプリケーションを再び開いたときの最後の位置に戻します。 – TayW

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

関連する問題