2

スライダーにスライダーのグラフィックを提供しました。

結果は次のとおりです。 ここに画像の説明を入力

すると右側に ここに画像の説明を入力

ご覧のとおり、エッジは丸みを帯びたものではなく「ボックス」になります。私が本当に欲しいのは、Apple が提供するものに近いものです。これは、カスタム スライダー イメージと nil の使用を切り替えるために使用したコードです。

- (IBAction)groupPinButton:(id)sender {
    self.groupPinButton.selected = ! self.groupPinButton.selected;
    UIImage *minImage = [[UIImage imageNamed:@"minimum_slider.png"]resizableImageWithCapInsets2:UIEdgeInsetsMake(0, 5, 0, 0)];
    UIImage *maxImage = [[UIImage imageNamed:@"maximum_slider.png"]resizableImageWithCapInsets2:UIEdgeInsetsMake(0, 0, 0, 5)];
    if (self.groupPinButton.selected)
    {


        [self.distanceSlider setMaximumTrackImage:maxImage forState:UIControlStateNormal];
        [self.distanceSlider setMinimumTrackImage:minImage forState:UIControlStateNormal];
    }
    else{

        [self.distanceSlider setMaximumTrackImage:nil forState:UIControlStateNormal];
        [self.distanceSlider setMinimumTrackImage:nil forState:UIControlStateNormal];
    }
}

maximumTrackImage を nil に設定した場合のスクリーンショットは次のとおりです。

ここに画像の説明を入力 ここに画像の説明を入力

どちらがはるかに見栄えがします。でもカスタムしたい。

minimum_slider.png と maximum_slider.png に使用する写真は次のとおりです。

ここに画像の説明を入力 ここに画像の説明を入力

そしてあなたはそこに着くことができます

http://i.stack.imgur.com/n30aw.png

http://i.stack.imgur.com/sF9SQ.png

ただし、もう一方のエッジは問題ありません。したがって、スライダーが最大値と最小値以外の場所にある場合、問題なく動作します。スライダーが最大の場合、右端の角がめちゃくちゃになります。一番左の角は大丈夫です。

4

1 に答える 1

2

ああ!私が抱えていたのと同じ問題。プログラムの最後に到達し、スライダーが最大になると、トラック イメージ全体が左側になり、この例では「minimum_slider.png」になります。したがって、「maximum_slider」画像の一部は表示されず (丸みを帯びた右端が表示されます)、「minimum_slider」の正方形の右側のみが表示されます。

答えは、2 つの画像の両端を丸くし、グラフィックの中央に拡張可能な部分 (エッジ インセット) を作成することだと思います。

UIEdgeInsets の動作についてまだ混乱しているため (ドキュメントはひどいものだと思います!)、デフォルトのトラックで十分です。それで、これを解決したら、私たち全員に知らせてください。

于 2012-10-25T21:17:17.170 に答える