UISlider
プログレスバーをより高くする、つまり高さを上げる方法を探しています。しかし、私は成功していません。カスタム画像などは使いたくないので、背を高くするだけで、UISlider
はそれほど薄く見えません。非常に明白な何かを見逃していますか?
探していたものが見つかりました。次のメソッドは、サブクラスで編集する必要があります。
- (CGRect)trackRectForBounds:(CGRect)bounds{
CGRect customBounds = ...
return customBounds;
}
minimumValueImage
とmaximumValueImage
を使用している場合など、受け入れられた答えは、場合によってはスライダーの幅を望ましくなく変更します。高さのみを変更し、他のすべてをそのままにする場合は、次のコードを使用します。
override func trackRect(forBounds bounds: CGRect) -> CGRect {
var newBounds = super.trackRect(forBounds: bounds)
newBounds.size.height = 12
return newBounds
}
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
)
}
}
トラックサイズを変更するための実用的なコードを確認したい人向け。
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()
}
}
残っているのは、ストーリーボード内のクラスを変更することだけです。
スライダーにカスタムのものを追加する場合を除き、シークバーアクションとオブジェクトタイプUISliderへのアウトレットを使用し続けることができます。