うるおいらんど

【Swift】UISliderでminimumTrackTintColorが上手く変更できない場合

SwiftUISlider

追記があります。

何故か引っかかってしまったやつ。

 

UISliderで最小値側の色を変えたいとき

mySlider.minimumTrackTintColor = UIColor.grayColor()

通常このように書くと思うのですが、minimumTrackTintColorを用いると下のようになってしまいます。

IMG_6847

このグラデーションをつけたくないのですが、ついてしまう・・・・・。

またmaximumTrackTintColorというものもあり、こちらは最大値側のバーの色を変更するのですが、これはグラデーションがつきません。

 

tintColorを変更するとminimum側の色が変更される

こんな感じにしたい・・・

IMG_6851

という場合はminimumTrackTintColorではなくtintColorを変更するとグラデーションしません。

mySlider.tintColor = UIColor.grayColor()

 

とりあえずこれで解決しました。

しかし両方グラデーションが必要な場合とかは試してないのでわからないです。

 

ちなみに・・・

なかなか解決できなかったのでとりあえず左側と右側それぞれに画像をつけることでそれっぽくみせるというか、解決?することもできます。

let sliderLeft = UIImage(named:"left.png")! as UIImage
let sliderRight = UIImage(named:"right.png")! as UIImage
mySlider.setMinimumTrackImage(sliderLeft, forState: .Normal)
mySlider.setMaximumTrackImage(sliderRight, forState: .Normal)

 

むん。

 

バーの高さを変更したり、つまみの画像を変更したりしていますがまた後々紹介します・・・。とりあえず進めます。

Additional Notes追記

Swift4で少しだけ

時代を感じるなぁ。

とりあえず今は

let slider = UISlider(frame: CGRect(x:50,y:50,width:200,height:50))
slider.minimumTrackTintColor = UIColor.red
slider.maximumTrackTintColor = UIColor.blue
self.view.addSubview(slider)

という感じになります。

tintColorを変えても特にどこも変わらなかったんですけどどこが変わるんだろう・・・

Comments

コメントはありません。

現在コメントフォームは工事中です。