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)
}
SPONSORED Proxyman: A high-performance, native macOS app for developers to easily capture, inspect, and manipulate HTTP/HTTPS traffic. The ultimate tool for debugging network traffic, supporting both iOS and Android simulators and physical devices.
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.