Skip to content

Commit aae74c3

Browse files
committed
SoftSwitchToggleStyle Update
Add disabled support for SoftSwitchToggleStyle.
1 parent 3790e15 commit aae74c3

File tree

2 files changed

+71
-51
lines changed

2 files changed

+71
-51
lines changed

Sources/Neumorphic/SoftDynamicToggleStyle.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import SwiftUI
99

1010
public struct SoftDynamicToggleStyle<S: Shape> : ToggleStyle {
1111

12+
@Environment(\.isEnabled) private var isEnabled
13+
1214
var shape: S
1315
var mainColor : Color
1416
var textColor : Color
@@ -54,6 +56,7 @@ public struct SoftDynamicToggleStyle<S: Shape> : ToggleStyle {
5456
.opacity(pressedEffect == .none ? 1 : (configuration.isOn ? 0 : 1) )
5557
}
5658
)
59+
.opacity(isEnabled ? 1 : 0.3)
5760
.onTapGesture {
5861
withAnimation(.easeInOut(duration: 0.2)) {
5962
configuration.isOn = !configuration.isOn
@@ -65,7 +68,9 @@ public struct SoftDynamicToggleStyle<S: Shape> : ToggleStyle {
6568

6669

6770
public struct SoftSwitchToggleStyle : ToggleStyle {
68-
71+
72+
@Environment(\.isEnabled) private var isEnabled
73+
6974
var tintColor : Color
7075
var offTintColor : Color
7176

@@ -100,6 +105,7 @@ public struct SoftSwitchToggleStyle : ToggleStyle {
100105
.offset(x: configuration.isOn ? 15 : -15)
101106
.animation(.easeInOut(duration: 0.2), value: configuration.isOn)
102107
}
108+
.opacity(isEnabled ? 1 : 0.3)
103109
.onTapGesture {
104110
withAnimation(.easeInOut(duration: 0.2)) {
105111
configuration.isOn.toggle()

neumorphic-examples/ios-example/SoftSwitchToggleDemoView.swift

Lines changed: 64 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -20,66 +20,80 @@ extension Text {
2020
struct SoftSwitchToggleDemoView: View {
2121
@State var toggleIsOn : Bool = false
2222

23-
var body: some View {
24-
return ZStack {
25-
Color.Neumorphic.main.edgesIgnoringSafeArea(.all)
26-
VStack(spacing:8){
27-
Text("Toggle")
28-
.font(.title)
29-
.fontWeight(.bold)
30-
31-
Text("System Default Toggle Button")
23+
@ViewBuilder
24+
fileprivate func demoView() -> some View {
25+
VStack{
26+
HStack {
27+
Text("System Default Toggle")
3228
.demoViewSectionTitle()
33-
34-
//System Toggle Button
35-
HStack(spacing:15) {
36-
Spacer()
29+
}
30+
//System Toggle Button
31+
HStack {
32+
Spacer()
33+
VStack{
3734
Toggle("Toggle", isOn: $toggleIsOn)
38-
.toggleStyle(SwitchToggleStyle(tint: .red))
39-
.labelsHidden()
40-
Spacer()
35+
.toggleStyle(SwitchToggleStyle(tint: .red))
36+
.labelsHidden()
37+
Text("Enabled")
4138
}
42-
.padding()
43-
44-
//softSwitchToggleStyle
39+
Spacer()
40+
VStack{
41+
Toggle("Toggle", isOn: $toggleIsOn)
42+
.toggleStyle(SwitchToggleStyle(tint: .red))
43+
.labelsHidden()
44+
.disabled(true)
45+
Text("Disabled")
46+
}
47+
Spacer()
48+
}
49+
.padding()
50+
51+
//softSwitchToggleStyle
52+
VStack {
4553
Text("Neumorphic")
4654
.demoViewSectionTitle()
4755
Text("Soft Switch Toggle Style")
4856
.demoViewSectionTitle()
49-
50-
HStack(spacing:15) {
51-
Spacer()
52-
Toggle("Toggle", isOn: .constant(false))
53-
.softSwitchToggleStyle(tint: .green, labelsHidden: true)
54-
Spacer()
55-
}
56-
.padding()
57-
58-
HStack(spacing:15) {
59-
Spacer()
60-
Toggle("Toggle", isOn: $toggleIsOn)
61-
.softSwitchToggleStyle(tint: .green, labelsHidden: true)
62-
Spacer()
63-
}
64-
.padding()
65-
HStack(spacing:15) {
66-
Spacer()
67-
Toggle("Toggle", isOn: $toggleIsOn)
68-
.softSwitchToggleStyle(tint: .blue, labelsHidden: true)
69-
Spacer()
70-
}
71-
.padding()
72-
HStack(spacing:15) {
73-
Spacer()
74-
Toggle("Toggle", isOn: $toggleIsOn)
75-
.softSwitchToggleStyle(tint: .red, labelsHidden: true)
76-
Spacer()
57+
softTogglePairView(tint: .gray)
58+
softTogglePairView(tint: .green)
59+
softTogglePairView(tint: .blue)
60+
softTogglePairView(tint: .red)
61+
}
62+
.padding()
63+
}
64+
.padding()
65+
}
66+
67+
@ViewBuilder
68+
fileprivate func softTogglePairView(tint: Color = .green) -> some View {
69+
HStack(spacing:15) {
70+
Spacer()
71+
VStack{
72+
Toggle("Toggle", isOn: $toggleIsOn)
73+
.softSwitchToggleStyle(tint: tint, labelsHidden: true)
74+
Text("Enabled")
75+
}
76+
Spacer()
77+
VStack{
78+
Toggle("Toggle", isOn: $toggleIsOn)
79+
.softSwitchToggleStyle(tint: tint, labelsHidden: true)
80+
.disabled(true)
81+
Text("Disabled")
82+
}
83+
Spacer()
84+
}
85+
}
86+
87+
var body: some View {
88+
ZStack {
89+
Color.Neumorphic.main.edgesIgnoringSafeArea(.all)
90+
NavigationView {
91+
ScrollView {
92+
demoView()
7793
}
94+
.navigationTitle("SoftSwitchToggle")
7895
.padding()
79-
80-
8196
}
82-
.padding()
8397
}
8498
}
8599

0 commit comments

Comments
 (0)