Grezzo
Grezzo

Reputation: 2263

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.

Upvotes: 3

Views: 1875

Answers (1)

siejkowski
siejkowski

Reputation: 1681

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

Upvotes: 3

Related Questions