Pan Mluvčí
Pan Mluvčí

Reputation: 1261

UISlider track height

I have implemented UISlider and I need to adjust track height. I found this but its not working.

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

enter image description here

Upvotes: 6

Views: 11383

Answers (2)

Pan Mluvčí
Pan Mluvčí

Reputation: 1261

Ok...I used matt's answer + provided example and I customized the code for my needs.

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

then inherid this to my Slider and woala.

enter image description here

This is my desired result.

enter image description here

All hail matt...thank you.

Upvotes: 16

matt
matt

Reputation: 534893

found this but its not working

Because you're using it wrong. You don't call it. You subclass, and override it.

However, the right approach is to supply new images for the track, with setMinimumTrackImage and setMaximumTrackImage.

Upvotes: 0

Related Questions