答えて
サードパーティのコントロールを必要とせず、スライダを自分で作成する必要もありません。あなたはまだUISliderを使用し、あなたの必要性:)
ステップ1のとおり、それをカスタマイズすることができます。
我々はそれが「白いISNをデフォルトされていないとして、我々は最小トラックの色を設定する必要があると見ることができるようにそれは???その幾分オレンジ、私はそれの正確なクールを知っていないので、赤に設定しています。あなたは好きな色を設定します:)
しかし、UISliderのsetMinimumTrackImage
は、色がないことを期待しています。だから色からUIImageを作成することができます。私は一度だけ作成したいので、怠惰な変数として作成しています:)
コードはかなりシンプルです。私は:)その
ステップ2を説明する必要と考えていません:あなたのイメージから
を、私たちはスライダーのサム画像をカスタムにする必要があると結論付けることができます。しかし、テキストは進捗状況に基づいて変更する必要があるため、静的イメージとしては作成できません。
だからUISliderのIBOutletを作成し、スライダに作成した画像を設定しUISlider進捗状況に基づいて、親指の画像を返すメソッド:)
func progressImage(with progress : Float) -> UIImage {
let layer = CALayer()
layer.backgroundColor = UIColor.green.cgColor
layer.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
layer.cornerRadius = 25
let label = UILabel(frame: layer.frame)
label.text = "\(progress)"
layer.addSublayer(label.layer)
label.textAlignment = .center
label.tag = 100
UIGraphicsBeginImageContext(layer.frame.size)
layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
ステップ3
を作成することができます:)好ましくはViewDidLoadである。
self.myslider.setMinimumTrackImage(minColor, for: UIControlState.normal)
self.myslider.setMinimumTrackImage(minColor, for: UIControlState.selected)
self.myslider.setThumbImage(self.progressImage(with: self.myslider.value), for: UIControlState.normal)
self.myslider.setThumbImage(self.progressImage(with: self.myslider.value), for: UIControlState.selected)
ステップ4:
があなたのスライダのIBActionを作成し、最終出力
@IBAction func sliderMoved(_ sender: Any) {
self.myslider.setThumbImage(self.progressImage(with: self.myslider.value), for: UIControlState.normal)
self.myslider.setThumbImage(self.progressImage(with: self.myslider.value), for: UIControlState.selected)
}
を書きますEDIT
本当にわからないどのようにそれに気づいたが、あなたは慎重に、O/Pを見ている場合は、最小トラックイメージがUISlider側が四角になる設定でそれを見ることができる多く!!!!
スライダーエッジを丸くするには?
その我々は半球体(半円形)左側スライダ上の曲線の画像を持っていた場合、コードは一方、正方形の画像を返した使用して作成UIImageは正しく示していることになるので:)
半円を描き、それを画像に変換する書き込みパスは、角の半径を持つ円形画像を作成し、画像を半円のように見せることに興味がある画像の一部のみを繰り返すためにwithCapInsets
を利用しています。D
私たちが答える前に、別の質問に答えることができます:P
スライダーの高さを上げる方法
あなたのスライダーのサブクラスを作成し、あなたが10
するUISliderの高さを返しています見ることができるように
class MySlider: UISlider {
override func trackRect(forBounds bounds: CGRect) -> CGRect {
return CGRect(x: bounds.origin.x, y: bounds.origin.y, width: bounds.size.width, height: 10)
}
}
を上書きするには、今すぐ戻って前の質問に行くことができます。 UISliderのエッジをカーブにする方法??
はここにやっている何:)
let minColor : UIImage = {
let layer = CALayer()
layer.frame = CGRect(x: 0, y: 0, width: 10, height: 10)
layer.cornerRadius = 5
layer.backgroundColor = UIColor.red.cgColor
UIGraphicsBeginImageContext(layer.frame.size)
layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}()
次のようにあなたのminColor怠惰な変数の宣言を変更します?幅と高さのレイヤーを10に作成し、角の半径を5に設定して半径5の円にします:)それはすべてです。
変更:)
self.myslider.setMinimumTrackImage(minColor.resizableImage(withCapInsets: UIEdgeInsetsMake(3, 5, 5, 4)), for: UIControlState.normal)
self.myslider.setMinimumTrackImage(minColor.resizableImage(withCapInsets: UIEdgeInsetsMake(3, 5, 5, 4)), for: UIControlState.selected)
self.myslider.setThumbImage(self.progressImage(with: self.myslider.value), for: UIControlState.normal)
self.myslider.setThumbImage(self.progressImage(with: self.myslider.value), for: UIControlState.selected)
次のようにのviewDidLoadでスライダーの画像を設定するために、あなたのコードそれらUIEdgeInsetsMake何である(3、5、5、4)??私は慎重画像(任意の曲線を持っていない部分)の一部のみを作り上げ、それを繰り返すのiOSを求めてい
:)ザッツすべて:)
は、どのように、最終的なO/Pはその後のように見えるん??
きちんとした答え、私は同じことをやったでしょう。 +1 –
@ adil-soomro:ありがとうございました! –
- 1. SNMPでハンドルを取得するのに手助けが必要
- 2. jqGridカスタム入力要素で親テーブルへのハンドルが必要
- 3. InvalidOperationException Nullableオブジェクトには値がある必要があります
- 4. GDIハンドル分析のためにWOW64ダンプが必要ですか?
- 5. GetModuleHandleの戻り値を保存しないとハンドルを閉じる必要がありますか?
- 6. UISliderの値が範囲外の値に変更される
- 7. SimpleXMLオブジェクトの値にアクセスする必要があります
- 8. 値でのUISliderの停止
- 9. ???使用してエラー==> 'CurrentAxes'プロパティに渡されたuicontrolハンドルを設定する - 有効な軸ハンドルが必要
- 10. 他の要素に特定の値がある場合の必須要素
- 11. UISlider ViewDidLoad()のサブビューがありません
- 12. バックボーンモデルIDは数値である必要がありますか?
- 13. formatDistData()、距離は数値である必要があります
- 14. 値エラー: "DoctorPerHospital.doc_id"は "DoctorUserProfile"インスタンスである必要があります
- 15. 入力値に2を加える必要があります
- 16. JSONにnull値を含める必要があります
- 17. フラグ値をtrueにする必要があります
- 18. 私は開始値にリセットする必要があるMySqlテーブルの列が必要です
- 19. 値がtrueである必要があるjsonスキーマのanyOfをテストする
- 20. Datagridviewエラー:値が '最小値と最大値'の間にある必要があります
- 21. ページロードの前に値を追加して読み取る必要があります。ページアイテムを値ごとに表示する必要があるため、
- 22. 後で子プロセスが所有する継承されたハンドルを閉じる必要がありますか?
- 23. ハンドルは、私はそうのようなJSONマップを反復処理する必要があるJSONマップ
- 24. 未知のエラー:noUiSlider(10.0.0):すべてのハンドルにフォーマッタを渡す必要があります
- 25. noUiSliderツールチップの書式設定で「すべてのハンドルにフォーマッタを渡す必要があります」
- 26. 個別の値を表示する必要があります
- 27. ドロップダウンリストの値とテキストをトリミングする必要があります
- 28. 値のテキストボックスを検証する必要があります
- 29. InvalidArgumentError:プレースホルダテンソルプレースホルダの値を入力する必要があります
- 30. この値をループする必要がありますか?
uが画像を投稿することができますか? – vaibby
[CocoaControls](https://www.cocoacontrols.com/search?q=uislider)は、こうしたライブラリの天国です。 –
UIViewで簡単に作成できます。 –