Skip to content

Instantly share code, notes, and snippets.

@MojtabaHs
Created January 31, 2024 11:35
Show Gist options
  • Save MojtabaHs/77edd40ffad2b481c72dabd87501ce3c to your computer and use it in GitHub Desktop.
Save MojtabaHs/77edd40ffad2b481c72dabd87501ce3c to your computer and use it in GitHub Desktop.
Enabling binding to the device motion sensor
struct MotionEffectModifier: ViewModifier {
@ObservedObject private(set) var manager = MotionManager.shared
@Binding var pitch: Double
@Binding var roll: Double
let magnitude: Double
func body(content: Content) -> some View {
content
.onAppear { manager.startUpdate() }
.onDisappear { manager.stopUpdate() }
.onChange(of: pitch) { pitch = $0 }
.onChange(of: roll) { roll = $0 }
}
}
extension View {
func motionEffect(pitch: Binding<Double>, roll: Binding<Double>, magnitude: Double = 1) -> some View {
modifier(MotionEffectModifier(pitch: pitch, roll: roll, magnitude: magnitude))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment