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)
}
SAVE 50% To celebrate WWDC23, all our books and bundles are half price, so you can take your Swift knowledge further without spending big! Get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn advanced design patterns, testing skills, and more.
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.