2

だから私は取り組んできたUISliderを持っていて、カスタムイメージを持つ必要があります。大量のピクセルを持ち、UIImageView に追加すると見栄えの良い @2x 画像がありますが、同じ画像を UISlider サム画像の代わりに使用した瞬間に、ピクセル化されてしまいます。それとスライダーの親指ががらくたのように見えます。これを修正する方法について何か考えはありますか?

これが私のサンプルコードの一部です。

 slider = [[UISlider alloc] initWithFrame:CGRectMake(sliderOffset, 29.5, siderW, 50)];
    [slider addTarget:self action:@selector(sliderAction) forControlEvents:UIControlEventValueChanged];
    [slider setBackgroundColor:[UIColor clearColor];
    slider.minimumValue = 0.0;
    slider.maximumValue = 10000.0;
    slider.continuous = YES;
    slider.value = 3000.00;
    [slider setThumbImage:[UIImage imageNamed:@"Slider@2x.png"] forState:UIControlStateNormal];
    [slider setThumbImage:[UIImage imageNamed:@"Slider@2x.png"] forState:UIControlStateHighlighted];

前もって感謝します!

4

1 に答える 1

2

これが私がそれを解決した方法です:

1) サブクラス化された UISlider

2) クリア イメージを作成し、スライダーのつまみをそのクリア イメージに設定します。

[self setThumbImage:[UIImage imageNamed:@"ClearImageForOverride.png"] forState:UIControlStateNormal];
    [self setThumbImage:[UIImage imageNamed:@"ClearImageForOverride.png"] forState:UIControlStateHighlighted];

3) UIImageView を作成し、親指の中心に沿って作成しました。

float imageWH = PassedInHeightWidthFromSubClass;
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 1, imageWH, imageWH)];
imageView.image = [UIImage imageNamed:@"NewThumbImage"];
[self addSubview:imageView];
[self bringSubviewToFront:imageView];

imageView.center = CGPointMake(thumbRect.origin.x + self.frame.origin.x + localImageViewCenter,  self.frame.origin.y - sliderImageViewYOffset);
[self addTarget:self action:@selector(sliderValueChanged) forControlEvents:UIControlEventValueChanged];

4) 次に、sider の値が変更されたら、imageView にその中心がどこにあるべきかを伝えます。

-(void)sliderValueChanged {
    CGRect trackRect = [self trackRectForBounds:self.bounds];
    CGRect thumbRect = [self thumbRectForBounds:self.bounds trackRect:trackRect value:self.value];
    imageView.center = CGPointMake(thumbRect.origin.x + self.frame.origin.x + localImageViewCenter,  self.frame.origin.y - sliderImageViewYOffset);
}

基本的に、これを使用すると、見栄えがよく、ノブとして完璧に機能するスライダー ノブの任意のサイズの画像を作成できます。

于 2014-04-17T17:04:15.037 に答える