2

カスタム UISlider の外観を作成しています (または作成しようとしています)。まだ水平ですが、はるかに高くなっています。2 つの問題があります。

1.これは、スライダーに画像を取得するために使用しているコードです。

UIImage *minImage = [UIImage imageNamed:@"sliderMin.png"];
UIImage *maxImage = [UIImage imageNamed:@"sliderMax.png"];
UIImage *thumbImage = [UIImage imageNamed:@"sliderThumb.png"];

minImage = [minImage stretchableImageWithLeftCapWidth:33.0 topCapHeight:0.0];
maxImage = [maxImage stretchableImageWithLeftCapWidth:33.0 topCapHeight:0.0];
// thumbImage = [minImage stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];

[_contrastSlider setMinimumTrackImage:minImage forState:UIControlStateNormal];
[_contrastSlider setMaximumTrackImage:maxImage forState:UIControlStateNormal];
[_contrastSlider setThumbImage:thumbImage forState:UIControlStateNormal];

minImage = nil;
maxImage = nil;
thumbImage = nil;

[_contrastSlider setMinimumValue:0.0];
[_contrastSlider setMaximumValue:100.00];
[_contrastSlider setValue:25.0];

最小、最大、親指の 3 つの画像があります。これらは画像とデバイス上での表示ですが、正しくありません。

まだ画像を投稿できないので、コンポーネントを表示するリンクをMYSlider.jpeg次に示します。

スライダーは、親指の右側がクリーム色、左側がピンク色になります。しかし、これは起こっていません。

それが問題 1 です。問題 2 は、親指のサイズのデフォルトが小さすぎることです。私はこれを使用しています:UISlider Height Hackを使用して親指の高さを上げようとしていますが、悲しいことに、それは高さではなく幅を広げています。だから私は、領域を広くするのではなく、高くするための助けを求めており、なぜ私のピンクの画像が無視されているのだろうか?

助けてくれてありがとう。

それが役立つ場合、これが私の UISlider サブクラス .m です。

-(BOOL) pointInside:(CGPoint)point withEvent:(UIEvent*)event {
CGRect bounds = self.bounds;
bounds = CGRectInset(bounds, -10, -8);
return CGRectContainsPoint(bounds, point);

}

-(BOOL) beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
  CGRect bounds = self.bounds;
  float thumbPercent = (self.value - self.minimumValue) / (self.maximumValue - self.minimumValue);
  float thumbPos = THUMB_SIZE + (thumbPercent * (bounds.size.width - (2 * THUMB_SIZE)));
  CGPoint touchPoint = [touch locationInView:self];
  return (touchPoint.x >= (thumbPos - EFFECTIVE_THUMB_SIZE) && touchPoint.x <= (thumbPos + EFFECTIVE_THUMB_SIZE));
}

ありがとうございました。

4

1 に答える 1

0

ビューでスライダーの値を設定すると、ロードメソッドが問題を引き起こしていることがわかりました。それらをInterface Builderで設定したところ、修正されました。IB に設定したら、問題がなければコードで微調整できます。

私の他の問題については、これは実際のデバイスでテストしていないためかどうか疑問に思っているので、数週間でデバイスに搭載されるまでその質問を一時停止します.

于 2012-04-26T07:47:49.583 に答える