3

UISlider の右側に色合いがあり、左側にくすんだ色があるようにしようとしています (それらを入れ替えます)

右側の正しい色を取得できます

mySlider.maximumTrackTintColor = self.view.tintColor

を設定するために灰色を取得する方法がわかりませんminimumTrackTintColor

私は試した

mySlider.minimumTrackTintColor = mySlider.maximumTrackTintColor

を設定する前に、カスタム色が設定されていない場合は nil を返すmaximumTrackTintColorため、それは機能しません。mySlider.maximumTrackTintColor

4

1 に答える 1

3

問題は、tintColor を取得しようとしているということですが、デフォルトのバニラ 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 に答える