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

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

 

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)

 

むん。

 

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

 

2018/04/29追記 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を変えても特にどこも変わらなかったんですけどどこが変わるんだろう・・・
Swift ,

Comments...

コメントは認証制です。詳しくは下記の注意をお読みください。お気軽にコメントお願いします!

Write a Comment

コメント時の注意

「Twitter」「Facebook」「Google+」「WordPress」のいずれかのアカウントをお持ちの方は各アカウントと連携することでコメントできます。 コメントしたことはSNSに流れませんので、アカウントをお持ちの方はこちらの方法でコメントを投稿して下さると嬉しいです。 アカウントをお持ちでない方はメールアドレスで投稿することができます。 初回コメント時は承認後に表示されます。

Related Memo...

記事を書くほどでもないけれどメモっておきたいこと

テスト投稿。

例えばiphone7 の画面サイズ

750 × 1334
半分375 × 667

iOS

UITableView.RowAnimation の .none はアニメーションするよ

UITableView.RowAnimation の .none はアニメーションがnoneなわけじゃなく、デフォルトの設定を使うよという意味らしい。

The inserted or deleted rows use the default animations.

なのでアニメーションしちゃう。今更の気づき。

 

iOS

UINavigationController + UIScrollView の組み合わせで使っている時に謎の余白ができる時

UINavigationController + UIScrollView の組み合わせで使っていて、UIScrollView 上に AutoLayout で上下左右0で View を設置しているのに、30px程度上にずれてしまうとき。

`navigationController.navigationBar.isTranslucent = false` にすると直るかもしれない。

ScrollView上のコンテンツとNavigationBarの重なっているところが透過していたら多分これで直せるはず。

通常のターゲットではちゃんと動いているのに、iOSSnapshotTestCase を用いたテストでだけこの対応が必要なのよくわからないけれど。。。

iOS
more