Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get the default maximumTrackTintColor for a UISlider

I'm trying to make a UISlider have the tint colour on the right side and the dull colour on the left side (swap them around)

I'm able to get the correct colour on the right with

mySlider.maximumTrackTintColor = self.view.tintColor

but I don't know how to get the grey colour in order to set the minimumTrackTintColor.

I tried

mySlider.minimumTrackTintColor = mySlider.maximumTrackTintColor

before I set the maximumTrackTintColor but that doesn't work because mySlider.maximumTrackTintColor returns nil if a custom colour hasn't been set.

like image 209
Grezzo Avatar asked Nov 20 '25 03:11

Grezzo


1 Answers

Ok, so the problem is that you are trying to get the tintColor, but the default vanilla iOS8 non-customised UISlider is not using tintColor to set its colors.

It's using imageForState.

So you can get the images with slider.minimumTrackImageForState(UIControlState.Normal)! and slider.maximumTrackImageForState(UIControlState.Normal)! methods.

However, to be more defensive I'd recommend trying both approaches:

let minimumColor = slider.minimumTrackTintColor
let maximumColor = slider.maximumTrackTintColor
let minimumImage = slider.minimumTrackImageForState(UIControlState.Normal)
let maximumImage = slider.maximumTrackImageForState(UIControlState.Normal)

if let minimumColor = minimumColor {
    slider.maximumTrackTintColor = minimumColor
} else if let minimumImage = minimumImage {
    slider.setMaximumTrackImage(minimumImage, forState: .Normal)
} else {
    // ok, something has changed the big way, just fallback on some color you like
}

if let maximumColor = maximumColor {
    slider.minimumTrackTintColor = maximumColor
} else if let maximumImage = maximumImage {
    slider.setMinimumTrackImage(maximumImage, forState: .Normal)
} else {
    // ok, something has changed the big way, just fallback on some color you like
}

The result is (top image before, down image after):

enter image description here

like image 161
siejkowski Avatar answered Nov 21 '25 18:11

siejkowski



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!