10

UISlider の視覚的な外観をカスタマイズするには、サムとトラックのイメージを設定できます。トラック画像の一部が適切に引き伸ばされます。ドキュメントから:

伸縮可能な領域は、2 つのエンド キャップ領域の間に位置します。エンド キャップは、そのままの状態で引き伸ばされないイメージの部分を定義します。伸縮可能な領域は、画像を長く見せるために複製できるエンド キャップ間の 1 ポイント幅の領域です。

今私が抱えている問題は、伸縮可能な領域の幅が 1 ポイントを超える必要があることです。(パターンです) 残念ながら1ポイント幅はSDKでハードコーディングされているようです。

これを回避する方法を知っている人はいますか? または、これを行うには、独自のスライダーを最初から作成する必要がありますか?

4

7 に答える 7

12

透明な画像をトラック画像として使用し、UIImageView を下に置くだけです:)

于 2010-06-11T10:27:19.150 に答える
2

私はそれが遅い答えであることを知っています。

しかし、私は次のように問題を解決しました:

4 は、png ファイルの丸いキャップの幅です。

UIImage *minimum = [UIImage imageNamed:@"slider_minimum.png"];
[slider setMinimumTrackImage:[minimum stretchableImageWithLeftCapWidth:4 topCapHeight:0]
                      forState:UIControlStateNormal];
于 2012-08-09T04:19:22.947 に答える
1

そのためには、独自のスライダーを作成する必要があると思います。ストレッチ可能な領域に関するUISliderの動作を変更する(パブリック)APIはないようです。

于 2009-04-16T10:30:21.633 に答える
1

パターンを事前にレンダリングして、必要な幅の画像を作成するだけです。

于 2009-04-16T13:33:23.677 に答える
0

イメージを StretchableImageWithLeftCapWidth:topCapHeight: で初期化する必要があります。leftCapWidth と topCapHeight は、画像オブジェクトの読み取り専用プロパティですが、その関数を使用して設定できます。左右のキャップは同じサイズで、上下も同じなので、左右のみ設定します。したがって、左側のサイズが 5 ピクセルのカスタム スライダー トラックを使用するには、幅 11 ピクセルの画像が必要です。高さは任意です。左キャップの場合は 5、トラック用に引き伸ばされた幅は 1 ピクセルです。右側にさらに 5 つ。遊んでいないので、0 より大きい topCapHeight を使用しても期待どおりに機能するかどうかはわかりませんが、大きな問題は発生しないと思います。

于 2009-04-17T03:15:26.373 に答える
0

UISlider の背後にパターンが必要でした。両方の画像を nil に設定し、スライダーの下にビューを追加しました。親指の両側で異なる必要はなかったからです。位置に基づいて変更する必要がある場合、これはより困難になりますが、実行可能です。

于 2010-08-19T14:33:30.540 に答える