私はこのウィジェットを喜んで実行します:
ABCだけを選択できます。
誰かがすでに似たようなことをしたかどうか何か考えはありますか?そうでない場合は、どのように行いますか?
個人的には、標準のUISliderを使用し、valueChangedハンドラーにロジックを追加します。これにより、ユーザーがスライダーをスケール上の任意のポイントにドラッグすると、コードは最も近い「有効な」値を判別し、手動で設定します。有効な数値への値。
たとえば、ユーザーがスライダーを0.9にドラッグした場合、有効なポイントまでの距離は0.9(Aまで)、0.4(Bまで)、0.1(Cまで)です。したがって、コードはCを選択し、slider.valueを1.0に設定します。そのプロパティをアニメートできれば、手元にあることを思い出せませんが、おそらくできます。それはユーザーにとってはるかに見栄えがするでしょう。
ビジュアルの場合、UISliderを保持するコンテナクラスと、有効な値ごとにUILabelを作成します。スライダーの下の目盛りに沿ってそれらのラベルをそれらの位置に従って配置することはそれほど難しくありません。適切な自動サイズ変更を使用すると、コンテナビューの形状をどのように変更しても、コントロールは正しく表示されます。
磨きをかけるために、おそらく「選択された」ラベルのフォントを微調整して太字にするか、アイテムが選択されていることを二重に明確にするために何か他のものを使用します。
UIGestureRecognizersを「スライダー画像」に追加し、タップまたはドラッグがスライダーのA、B、またはCの領域内で終了した場合は、「スライダーボタン」を対応する位置にアニメーション化します。