3

我正在尝试使 UISlider 在右侧具有淡色,在左侧具有暗色(交换它们)

我能够在右边得到正确的颜色

mySlider.maximumTrackTintColor = self.view.tintColor

但我不知道如何获得灰色以便设置minimumTrackTintColor.

我试过了

mySlider.minimumTrackTintColor = mySlider.maximumTrackTintColor

在我设置之前,maximumTrackTintColor但这不起作用,因为mySlider.maximumTrackTintColor如果尚未设置自定义颜色,则返回 nil。

4

1 回答 1

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
}

结果是(之前的上图,之后的下图):

在此处输入图像描述

于 2014-12-25T22:42:46.557 回答