Swift version: 5.10
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)
}
SPONSORED Get accurate app localizations in minutes using AI. Choose your languages & receive translations for 40+ markets!
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.