我正在尝试让UISlider在右侧有淡色和左侧有暗色(交换它们)
我可以使用
在右侧获得正确的颜色mySlider.maximumTrackTintColor = self.view.tintColor
但我不知道如何设置灰色以设置minimumTrackTintColor
。
我试过
mySlider.minimumTrackTintColor = mySlider.maximumTrackTintColor
在我设置maximumTrackTintColor
之前,但这不起作用,因为如果尚未设置自定义颜色,mySlider.maximumTrackTintColor
将返回nil。
答案 0 :(得分:3)
好的,问题是你正在尝试获取tintColor,但是默认的vanilla iOS8非自定义UISlider没有使用tintColor来设置它的颜色。
它正在使用imageForState。
因此,您可以使用slider.minimumTrackImageForState(UIControlState.Normal)!
和slider.maximumTrackImageForState(UIControlState.Normal)!
方法获取图片。
然而,为了更具防御性,我建议尝试两种方法:
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
}
结果是(前图像,图像之前的图像):