LOADING

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

公開日
更新日

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

 

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

mySlider.minimumTrackTintColor = UIColor.grayColor()

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

2016-01-【Swift】UISliderでminimumTrackTintColorが上手く変更できない場合-5148017109024acf960adbe7ecd981ab

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

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

 

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

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

2016-01-【Swift】UISliderでminimumTrackTintColorが上手く変更できない場合-3f9501274d9e431a99476209c77805d3

という場合は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)

 

むん。

 

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


追記

(追記日: 2018-04-28)

時代を感じるなぁ。

とりあえず今は

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)

<img src="/images/images/IMG_2620-300x78.jpg" alt="images/IMG_2620-300x78.jpg" />

という感じになります。

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

公開日
更新日