Skip to main content
 首页 » 操作系统

ios之如何获得 UISlider 的默认 maximumTrackTintColor

2024年01月01日61jirigala

我正在尝试使 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 
} 

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