You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
2.2 KiB

//
// MySlider.swift
// CalculMoy
//
// Created by etudiant on 12/06/2023.
//
import SwiftUI
struct UISliderView: UIViewRepresentable {
@Binding var value: Double
@Binding var editable: Bool
var minValue = 1.0
var maxValue = 100.0
var thumbColor: UIColor = UIColor(Color.black.opacity(0))
var minTrackColor: UIColor = .red
var maxTrackColor: UIColor = .lightGray
class Coordinator: NSObject {
var value: Binding<Double>
init(value: Binding<Double>) {
self.value = value
}
@objc func valueChanged(_ sender: UISlider) {
self.value.wrappedValue = Double(sender.value)
}
}
func makeCoordinator() -> UISliderView.Coordinator {
Coordinator(value: $value)
}
func makeUIView(context: Context) -> UISlider {
let slider = UISlider(frame: .zero)
slider.thumbTintColor = thumbColor
slider.minimumTrackTintColor = minTrackColor
slider.maximumTrackTintColor = maxTrackColor
slider.minimumValue = Float(minValue)
slider.maximumValue = Float(maxValue)
if editable{
slider.value = Float(value)
}
slider.addTarget(
context.coordinator,
action: #selector(Coordinator.valueChanged(_:)),
for: .valueChanged
)
return slider
}
func updateUIView(_ uiView: UISlider, context: Context) {
uiView.value = Float(value)
uiView.minimumTrackTintColor = value > 10 ? .green : .red
}
}
struct UISliderView_Previews: PreviewProvider {
private var currentValue = 6.0
static var previews: some View {
// UISliderView(value: Binding(
// get: {currentValue},set: { value in
// currentValue
// }
//
//
// ),
//
// minValue: 1.0,
//
// maxValue: 10.0,
//
// thumbColor: .red,
//
// minTrackColor: .purple,
//
// maxTrackColor: .green)
Text("je")
}
}