web-dev-qa-db-ja.com

UISliderのカスタマイズ(トラック画像の高さ)

UISliderをカスタマイズしています。通常の親指よりも高いカスタム親指画像を設定することはできましたが、最小トラック画像を高く設定するとトラックを高くすることはできませんでしたが、トラックの高さは同じままでした。 iPadのiPod/Musicアプリのように、音量スライダーも通常のスライダーよりも高くなっている可能性があります。


(出典: cocoia.com

12
user997128

次のように、スライダーをサブクラス化し、trackRectForBounds:メソッドをオーバーライドする必要があります。

- (CGRect)trackRectForBounds:(CGRect)bounds
{
    return bounds;
}
24
antalkerekes

Swiftの最も簡単なソリューション:

class TBSlider: UISlider {

    override func trackRectForBounds(bounds: CGRect) -> CGRect {
        return CGRectMake(0, 0, bounds.size.width, 4)
    }
}

トラックサイズを変更するためのいくつかの実用的なコードを見たい人のために。

class CustomUISlider : UISlider
{        
    override func trackRectForBounds(bounds: CGRect) -> CGRect {
        //keeps original Origin and width, changes height, you get the idea
        let customBounds = CGRect(Origin: bounds.Origin, size: CGSize(width: bounds.size.width, height: 5.0))
        super.trackRectForBounds(customBounds)
        return customBounds
    }

    //while we are here, why not change the image here as well? (bonus material)
    override func awakeFromNib() {
        self.setThumbImage(UIImage(named: "customThumb"), forState: .Normal)
        super.awakeFromNib()
    }
}

残っているのは、ストーリーボード内のクラスを変更することだけです。

storyboardstuff

スライダーにカスタムのものを追加する場合を除いて、シークバーアクションとアウトレットをオブジェクトタイプUISliderに引き続き使用できます。

4
CularBytes

次のメソッドを使用するsetThumbImagesetMinimumTrackImagesetMaximumTrackImage

[self setThumbImage:[UIImage imageNamed:@"switchThumb.png"] forState:UIControlStateNormal];
    [self setMinimumTrackImage:[UIImage imageNamed:@"switchBlueBg.png"] forState:UIControlStateNormal];
    [self setMaximumTrackImage:[UIImage imageNamed:@"switchOffPlain.png"] forState:UIControlStateNormal];

このようなサブクラスを作成します

- (id) initWithFrame: (CGRect)rect{
    if ((self=[super initWithFrame:CGRectMake(rect.Origin.x,rect.Origin.y,90,27)])){
        [self awakeFromNib];
    }
    return self;
}
2
SAKrisT
//use this code

 UIImage *volumeLeftTrackImage = [[UIImage imageNamed: @"video_payer_scroll_selection.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0];
        UIImage *volumeRightTrackImage= [[UIImage imageNamed: @"video_bar_bg.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0];
        [volumeslider setMinimumTrackImage: volumeLeftTrackImage  forState: UIControlStateNormal];
        [volumeslider setMaximumTrackImage: volumeRightTrackImage  forState: UIControlStateNormal];
        [volumeslider setThumbImage:[UIImage imageNamed:@"sound_bar_btn.png"] forState:UIControlStateNormal];
        [tempview addSubview:volumeslider];
1
NANNAV