File tree Expand file tree Collapse file tree 4 files changed +16
-10
lines changed Expand file tree Collapse file tree 4 files changed +16
-10
lines changed Original file line number Diff line number Diff line change @@ -21,3 +21,9 @@ import SwiftUI
21
21
let validatedValue = min ( bounds. upperBound, max ( bounds. lowerBound, steppedNewValue) )
22
22
return validatedValue
23
23
}
24
+
25
+ extension Comparable {
26
+ func clamped( to range: ClosedRange < Self > ) -> Self {
27
+ min ( max ( self , range. lowerBound) , range. upperBound)
28
+ }
29
+ }
Original file line number Diff line number Diff line change @@ -24,10 +24,10 @@ extension PointSlider {
24
24
25
25
self . init (
26
26
PointSliderStyleConfiguration (
27
- x: Binding ( get: { CGFloat ( x. wrappedValue) } , set: { x. wrappedValue = V ( $0) } ) ,
27
+ x: Binding ( get: { CGFloat ( x. wrappedValue. clamped ( to : xBounds ) ) } , set: { x. wrappedValue = V ( $0) } ) ,
28
28
xBounds: CGFloat ( xBounds. lowerBound) ... CGFloat ( xBounds. upperBound) ,
29
29
xStep: CGFloat ( xStep) ,
30
- y: Binding ( get: { CGFloat ( y. wrappedValue) } , set: { y. wrappedValue = V ( $0) } ) ,
30
+ y: Binding ( get: { CGFloat ( y. wrappedValue. clamped ( to : yBounds ) ) } , set: { y. wrappedValue = V ( $0) } ) ,
31
31
yBounds: CGFloat ( yBounds. lowerBound) ... CGFloat ( yBounds. upperBound) ,
32
32
yStep: CGFloat ( yStep) ,
33
33
onEditingChanged: onEditingChanged,
@@ -66,8 +66,8 @@ private struct PointSlidersPreview: View {
66
66
@State var pointX1 = 0.5
67
67
@State var pointY1 = 0.5
68
68
69
- @State var pointX2 = 0.5
70
- @State var pointY2 = 0.5
69
+ @State var pointX2 = 2.0
70
+ @State var pointY2 = - 0.5
71
71
72
72
var body : some View {
73
73
VStack ( spacing: 32 ) {
Original file line number Diff line number Diff line change @@ -25,7 +25,7 @@ extension RangeSlider {
25
25
self . init (
26
26
RangeSliderStyleConfiguration (
27
27
range: Binding (
28
- get: { CGFloat ( range. wrappedValue. lowerBound) ... CGFloat ( range. wrappedValue. upperBound) } ,
28
+ get: { CGFloat ( range. wrappedValue. clamped ( to : bounds ) . lowerBound) ... CGFloat ( range. wrappedValue. clamped ( to : bounds ) . upperBound) } ,
29
29
set: { range. wrappedValue = V ( $0. lowerBound) ... V ( $0. upperBound) }
30
30
) ,
31
31
bounds: CGFloat ( bounds. lowerBound) ... CGFloat ( bounds. upperBound) ,
@@ -70,7 +70,7 @@ private struct HorizontalRangeSlidersPreview: View {
70
70
@State var range3 = 0.1 ... 0.9
71
71
@State var range4 = 0.1 ... 0.9
72
72
@State var range5 = 0.1 ... 0.9
73
- @State var range6 = 0.1 ... 0.9
73
+ @State var range6 = - 2.0 ... 4.0
74
74
75
75
var body : some View {
76
76
VStack {
@@ -146,7 +146,7 @@ private struct HorizontalRangeSlidersPreview: View {
146
146
)
147
147
)
148
148
149
- RangeSlider ( range: $range6)
149
+ RangeSlider ( range: $range6, in : 1.0 ... 3.0 )
150
150
. cornerRadius ( 8 )
151
151
. frame ( height: 128 )
152
152
. rangeSliderStyle (
Original file line number Diff line number Diff line change @@ -24,7 +24,7 @@ extension ValueSlider {
24
24
25
25
self . init (
26
26
ValueSliderStyleConfiguration (
27
- value: Binding ( get: { CGFloat ( value. wrappedValue) } , set: { value. wrappedValue = V ( $0) } ) ,
27
+ value: Binding ( get: { CGFloat ( value. wrappedValue. clamped ( to : bounds ) ) } , set: { value. wrappedValue = V ( $0) } ) ,
28
28
bounds: CGFloat ( bounds. lowerBound) ... CGFloat ( bounds. upperBound) ,
29
29
step: CGFloat ( step) ,
30
30
onEditingChanged: onEditingChanged,
@@ -132,7 +132,7 @@ private struct VerticalValueSlidersPreview: View {
132
132
@State var value1 = 0.5
133
133
@State var value2 = 0.5
134
134
@State var value3 = 0.5
135
- @State var value4 = 0.5
135
+ @State var value4 = 4.0
136
136
137
137
var body : some View {
138
138
HStack {
@@ -158,7 +158,7 @@ private struct VerticalValueSlidersPreview: View {
158
158
)
159
159
)
160
160
161
- ValueSlider ( value: $value4)
161
+ ValueSlider ( value: $value4, in : 1.0 ... 3.0 )
162
162
. valueSliderStyle (
163
163
VerticalValueSliderStyle (
164
164
track: LinearGradient (
You can’t perform that action at this time.
0 commit comments