我正在尝试使 UISlider 在右侧具有淡色,在左侧具有暗色(交换它们)
我能够在右侧获得正确的颜色
mySlider.maximumTrackTintColor = self.view.tintColor
但我不知道如何获得灰色以设置minimumTrackTintColor。
我试过了
mySlider.minimumTrackTintColor = mySlider.maximumTrackTintColor
在我设置 maximumTrackTintColor 之前,但这不起作用,因为如果未设置自定义颜色,mySlider.maximumTrackTintColor 将返回 nil。
请您参考如下方法:
好的,所以问题是您正在尝试获取 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
}
结果是(上图在前,下图在后):
