2012-03-06 14 views
1

私はUISliderをカスタマイズすることができるので、UISlitchをUISlitchのように使用しようとしています。 私はUISwitchの仕組みを完全に真似しようとしています。UISlider - UISwitchのような機能

許容範囲のビットで変更し、ドラッグして中点を渡した後に変更します。

私はUISliderを設定しました。私の望む画像では、最小0は最大1、デフォルトは0、連続的なプロパティはOFFです。内部のタッチアップで以下のメソッドを起動します。

私は以下のアルゴリズムを書いていますが、動作しないということが1つあります。 ノブを一方の端から他方の端にドラッグすると、ノブは跳ね返ります。 (例:1.0〜0.0)

これを完成させるのに手伝ってもらえますか? ありがとう!

アルゴリズム:

- (void)sliderChanged:(UISlider *)slider { 

    [UIView animateWithDuration:0.2 animations:^{ 
     if ((slider.value >= 0.50 || slider.value == 0.0 || slider.value <= 0.10) && slider.value != 1.0) slider.value = 1.0; 
     else if ((slider.value < 0.50 || slider.value == 1.0 || slider.value >= 0.90) && slider.value != 0.0) slider.value = 0.0; 
    }]; 
} 
+0

'UISwitch'を"完全に "エミュレートしたいのであれば、単に' UISwitch'を使わないのはなぜですか?変更したい「UISwitch」については何ですか? –

答えて

1

あなたは1.0 0.0から、それをドラッグ

"立ち直る" するように指示されてプログラミングしているロジック:

[スライダーの値] = 0

あなたは言っています: 値== 0かつ値!= 1の場合、値を1に設定します

番目の論理パス と同じ

値== 1と値が!= 0は、0また

- (void)sliderChanged:(UISlider *)slider { 

    [UIView animateWithDuration:0.2 animations:^{ 
     if (slider.value >= 0.50) 
      slider.value = 1.0; 
     else if (slider.value < 0.50) 
      slider.value = 0.0; 
    }]; 
} 

に値を設定し、なぜあなたはUISwitchを使用したくない場合は?

0

私はUIKitを使い、私が取り組んでいるいくつかのアプリケーションのすべてをカスタマイズしています。私はUISwitchに見つかった解決策は、私が

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

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

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

経由でドラッグを扱うその時点から UIControl

のオフに基づいて独自に作成することでした

あなたはoタップジェスチャーを実装して、ネイティブスイッチと同じようにスイッチをタップすることができます。

私はUISliderを使って自分自身を作成し​​ました。私はUISliderでその "ネイティブ"スナップを感じることができなかったと感じました。

関連する問題