2012-02-23 5 views
1

UISliderには,0,1,2および3という4つのポイントがあります。私は、親指の位置が0-1のときは0に戻ってくるはずですが、弾力的な効果が必要です。 1-2,2-3についても同様です。この実装は私のアプリケーションで私に優位性を与えるでしょう。iPhone上でのUISliderの弾力効果

私は弾力のある効果でそれを試しました。しかし、それは良く見えません。

答えて

3

「タッチアップインサイド」にアクションを送信するために、あなたのスライダーを知らせますイベント(UIControlEventTouchUpInside)。この方法まで、アクションフック:それはあなたが本当に欲しいものかどう

- (IBAction)dragEndedWithSlider:(UISlider *)sender { 
    CGFloat roundedValue = roundf(sender.value); 
    [sender setValue:roundedValue animated:YES]; 
} 

かわりroundftruncfを使用することができます。

+0

Wao .. !!不思議に思った。おかげでロブ:) – Nitish

+0

+1:エレガント! :) –

+0

こんにちは@rob mayoff、私は1-2-3-4-5のようなスケールを持っていると私は言うことができる...今親指のイメージは2-4だけに移動する必要がありますし、4の後にそれは動くべきではないさらに。 – Srinivas

2

バインドインターフェイスビルダーで変更スライダー値に、この方法は

-(IBAction)sliderChanged:(id)sender { 

     slider.value = (int)slider.value; 
    } 
+0

これは私が試みたものです:)これは弾性効果を与えません。 – Nitish

+0

こんにちはNeverBe、私は1-2-3-4-5のようなスケールを持っていると言うことができます...今親指のイメージは2-4のみに移動する必要があります。 – Srinivas

+0

スケールを2-4に制限する – NeverBe

2

あなたはUISliderのサブクラスを作成し、これを追加することができます。

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 

    CGFloat floorValue = floor(self.value); 

    if ((self.value - floorValue) > 0.5) { 

     [self setValue: floorValue + 1.0 animated: YES]; 

    } else { 

     [self setValue: floorValue animated: YES]; 
    } 
} 
+0

こんにちはrokjarc、私は1-2-3-4-5のようなスケールを持っていると言えるでしょう...今度は親指のイメージは2-4だけに移動し、4の後にはshouldnさらに移動する。 – Srinivas

+0

@sailaja:コメントにコードを入れるのは難しいです(他の質問への回答を編集するのは難しい)。あなたの場合は 'touchesMoved:'をオーバーライドします。ここで、スライダオフセットの最小値と最大値を適用することができます。 if(self.value <2.0)[self setValue:2.0]のようなものです。 else if(self.value> 4.0)[self setValue 4.0]; ' –

関連する問題