2017-01-31 2 views
1

Ich habe UISlider implementiert und muss die Spurhöhe anpassen. Ich fand das aber es funktioniert nicht.UISlider Spurhöhe

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

enter image description here

Antwort

1

fanden diese aber seine Arbeit nicht

Weil Sie verwenden es falsch. Sie nicht Anruf es. Sie Unterklasse und überschreiben es.

Der richtige Ansatz ist jedoch die Bereitstellung neuer Bilder für die Spur mit setMinimumTrackImage und setMaximumTrackImage.

+1

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

1

Ok ... Ich habe matt Antwort + Beispiel verwendet und ich habe den Code für meine Bedürfnisse angepasst.

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) 
} 

dann erbte ich dies zu meinem Slider und Woala.

enter image description here

Dies ist mein gewünschtes Ergebnis.

enter image description here

AlleMatt Hagel ... danke.