Swift version: 5.6
Core Motion makes it ridiculously easy to read the accelerometer from iPhones and iPads, and it even takes care of managing how the accelerometer and gyroscope work together to report orientation. To get started import the Core Motion framework like this:
import CoreMotion
Now create a property that can store a CMMotionManager
, like this:
var motionManager: CMMotionManager!
When you're ready to start reading accelerometer data (this will be inside viewDidLoad()
for most people), go ahead and create your motion manager then call its startAccelerometerUpdates()
method:
motionManager = CMMotionManager()
motionManager.startAccelerometerUpdates()
Finally, read the accelerometer data as often as you want. It's optional, though, so make sure you unwrap it carefully.
For example, if you want to change the gravity of a SpriteKit physics world so that tipping your device makes things roll around, you'd look for something like this in your update()
method:
if let accelerometerData = motionManager.accelerometerData {
physicsWorld.gravity = CGVector(dx: accelerometerData.acceleration.y * -50, dy: accelerometerData.acceleration.x * 50)
}
TAKE YOUR SKILLS TO THE NEXT LEVEL If you like Hacking with Swift, you'll love Hacking with Swift+ – it's my premium service where you can learn advanced Swift and SwiftUI, functional programming, algorithms, and more. Plus it comes with stacks of benefits, including monthly live streams, downloadable projects, a 20% discount on all books, and free gifts!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 4.0 – see Hacking with Swift tutorial 26
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.