2012-03-05 8 views
3

サブクラスを返します。幅を2px小さくするには、minimumValueImageRectForBoundsmaximumValueImageRectForBoundsをオーバーライドします。だから私のコードはUISlider minimumValueImageRectForBounds:およびsuper maximumValueImageRectForBoundsは、親指を小さくするために、

- (CGRect)minimumValueImageRectForBounds:(CGRect)bounds 
{ 
    CGRect stdRect = [super minimumValueImageRectForBounds:bounds]; 
    return CGRectMake(stdRect.origin.x + 2, stdRect.origin.y, stdRect.size.width - 2, stdRect.size.height); 
} 

です。ポイントは、stdRectは空の長方形(0、0、0、0)です。私は明示的にその

- (CGRect)minimumValueImageRectForBounds:(CGRect)bounds 
{ 
    return CGRectMake(2, 0, 40, 8); 
} 

のようないくつかの四角形を設定している場合

Morover、それはすべての最小値画像の位置には影響を与えません。

アイデア?

+0

これも表示されています。私は、最小値画像の矩形が、親指イメージがどこにあるかの関数であるように思えますが、これは 'thumbRectForBounds'をオーバーライドするとより明白になります。 – eremzeit

答えて

-3

これをしないでください。これは私の過去の間違った答えです。私はその男が嫌いです。

- 一般的なルールとして

、あなたはおそらくアップル標準のUIコントロールをサブクラス化する必要はありません。それを構築して代わりにそれらのプロパティを設定することもできます(設定可能かどうかはわかりませんが、そうでなければならないようです)。

+1

それは変です。これらは私が望むならAppleがサブクラス化すると言っている4つの方法のうちの2つです。 msgstr "最小値イメージを描画する矩形をカスタマイズする場合は、このメソッドをオーバーライドして別の矩形を返すことができます。" – HiveHicks

+0

ええ、あなたは確かにそれを行うことができますが、プロパティがある場合は、手動で設定することができます、それは一般的に簡単な道を見つけるだろうと思う。たぶん私は「AppleのUI要素を使って作業するときに、サブクラス化よりもコード構成を好む」と言いたいはずです。そこに不明な点についてお詫び申し上げます。 –

+1

私は2012年の私の過去の自己に完全に同意していませんが、私は書き直しの歴史が嫌な証拠としてここに答えを残します。 (私がそこに行ったこと、将来の自己を見ますか?) –

0

私はちょうどそれを理解しました。私は十分に読んでいなかった。

minimumValueImageを設定することは、setMinimumTrackImage:forState:と同じではありません。 minimumValueImageは、スライダーの左側に表示されるイメージで、スライダーで何が起こっているのかは独立しています。 minimumValueImageRectForBoundsを無効にすると、このイメージのサイズが変更され(デフォルトのサイズは0ptの幅になります)、スライダフレームの幅が狭くなり、結果として右側に移動します。私が理解しているように、minimumTrackImageの矩形を変更する方法はありません(サム画像の右側に拡大するなど)。画像を変更することのみが可能です。

私は実際にminimumValueImageを設定することができる点を理解していません。スライダのサイズを変更し、別のUIImageViewをスライダの側面に追加することで、同じことを達成できるようです。知るか。

maximumValueImagesetMaximumTrackImage:forStateメソッドでは、ここで述べたことはすべて同じように適用されます。

関連する問題