web-dev-qa-db-ja.com

UISliderの高さを大きくしますか?

UISliderプログレスバーをより高くする、つまり高さを上げる方法を探しています。しかし、私は成功していません。カスタム画像などは使いたくないので、背を高くするだけで、UISliderはそれほど薄く見えません。非常に明白な何かを見逃していますか?

33
Josue Espinosa

探していたものが見つかりました。次のメソッドは、サブクラスで編集する必要があります。

- (CGRect)trackRectForBounds:(CGRect)bounds{
    CGRect customBounds = ...
    return customBounds;
}
13
Josue Espinosa

minimumValueImagemaximumValueImageを使用している場合など、受け入れられた答えは、場合によってはスライダーの幅を望ましくなく変更します。高さのみを変更し、他のすべてをそのままにする場合は、次のコードを使用します。

override func trackRect(forBounds bounds: CGRect) -> CGRect {
   var newBounds = super.trackRect(forBounds: bounds)
   newBounds.size.height = 12
   return newBounds
}
54
kwahn

CularBytesの...

open class CustomSlider : UISlider {
    @IBInspectable open var trackWidth:CGFloat = 2 {
        didSet {setNeedsDisplay()}
    }

    override open func trackRect(forBounds bounds: CGRect) -> CGRect {
        let defaultBounds = super.trackRect(forBounds: bounds)
        return CGRect(
            x: defaultBounds.Origin.x,
            y: defaultBounds.Origin.y + defaultBounds.size.height/2 - trackWidth/2,
            width: defaultBounds.size.width,
            height: trackWidth
        )
    }
}

カスタムクラスを設定して、ストーリーボードのUISliderでこれを使用します Custom class setting

IBInspectableを使用すると、ストーリーボードから高さを設定できます Height from storyboard

31
wils

トラックサイズを変更するための実用的なコードを確認したい人向け。

class CustomUISlider : UISlider {

    override func trackRect(forBounds 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.trackRect(forBounds: 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"), for: .normal)
        super.awakeFromNib()
    }
}

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

storyboardstuff

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

18
CularBytes