SettingsStepperRow.swift 957 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // LoopFollow
  2. // SettingsStepperRow.swift
  3. import SwiftUI
  4. struct SettingsStepperRow<Value>: View
  5. where Value: Strideable & Comparable,
  6. Value.Stride: SignedNumeric & Comparable
  7. {
  8. let title: String
  9. let range: ClosedRange<Value>
  10. let step: Value.Stride
  11. private let format: (Value) -> String
  12. @Binding private var value: Value
  13. init(
  14. title: String,
  15. range: ClosedRange<Value>,
  16. step: Value.Stride,
  17. value: Binding<Value>,
  18. format: @escaping (Value) -> String = { "\($0)" }
  19. ) {
  20. self.title = title
  21. self.range = range
  22. self.step = step
  23. _value = value
  24. self.format = format
  25. }
  26. var body: some View {
  27. Stepper(value: $value, in: range, step: step) {
  28. HStack {
  29. Text(title)
  30. Spacer()
  31. Text(format(value))
  32. .foregroundColor(.secondary)
  33. }
  34. }
  35. }
  36. }