2017-01-31 2 views
1

私はUISliderを実装しており、トラックの高さを調整する必要があります。 これが見つかりましたが、動作しません。UISliderトラックの高さ

self.slider.trackRect(forBounds: CGRect(x: 0, y: 0, width: 100, height: 100)) 

enter image description here

答えて

1

これを見つけたが、あなたはそれが間違って使っているので、そのは

を働いていません。 と呼んではいけません。あなたはサブクラス化し、を上書きします。

しかし、適切なアプローチは、トラックに新しい画像を提供することです。setMinimumTrackImagesetMaximumTrackImageです。

+1

例:https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch12p585slider/ch25p860slider/MySlider.swift – matt

1

Ok ...マットの答え+提供された例を使用し、自分のニーズに合わせてコードをカスタマイズしました。

let coinEnd = UIImage(/*HERE_LEFT_BLANK_IMG*/).resizableImage(withCapInsets: 
     UIEdgeInsetsMake(0,7,0,7), resizingMode: .stretch) 
. 
. 
. 
. 

override func trackRect(forBounds bounds: CGRect) -> CGRect { 
    var result = super.trackRect(forBounds: bounds) 
    result.origin.x = 0 
    result.size.width = bounds.size.width 
    result.size.height = 10 //added height for desired effect 
    return result 
} 

override func thumbRect(forBounds bounds: CGRect, trackRect rect: CGRect, value: Float) -> CGRect { 
    return super.thumbRect(forBounds: 
     bounds, trackRect: rect, value: value) 
     .offsetBy(dx: 0/*Set_0_value_to_center_thumb*/, dy: 0) 
} 

これを私のSliderとwoalaに継承します。

enter image description here

これは私の望ましい結果です。

enter image description here

すべてはあなたに感謝...マット雹。