Book Image

Learning Xcode 8

By : Jak Tiano
Book Image

Learning Xcode 8

By: Jak Tiano

Overview of this book

Over the last few years, we’ve seen a breakthrough in mobile computing and the birth of world-changing mobile apps. With a reputation as one of the most user-centric and developer-friendly platforms, iOS is the best place to launch your next great app idea. As the official tool to create iOS applications, Xcode is chock full of features aimed at making a developer’s job easier, faster, and more fun. This book will take you from complete novice to a published app developer, and covers every step in between. You’ll learn the basics of iOS application development by taking a guided tour through the Xcode software and Swift programming language, before putting that knowledge to use by building your first app called “Snippets.” Over the course of the book, you will continue to explore the many facets of iOS development in Xcode by adding new features to your app, integrating gestures and sensors, and even creating an Apple Watch companion app. You’ll also learn how to use the debugging tools, write unit tests, and optimize and distribute your app. By the time you make it to the end of this book, you will have successfully built and published your first iOS application.
Table of Contents (23 chapters)
Learning Xcode 8
Credits
About the Author
About the Reviewer
www.PacktPub.com
Preface
Index

CMDeviceMotion


Now, these last two sections are really great to get some low level data from your iPhone's sensors, but the CMMotionManager provides a great way to get calibrated data with bias removed automatically by Core Motion: CMDeviceMotion. This class contains a handful of sensory data that has already been processed by algorithms in Core Motion.

Since we're already familiar with the way we configure CMMotionManager to begin polling sensors, I'll just leave the code here for you to look at; you should already know how it works:

class ViewController: UIViewController {
    
    let motionManager = CMMotionManager()
    let motionQueue = OperationQueue()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if motionManager.isDeviceMotionAvailable {
            motionManager.deviceMotionUpdateInterval = 0.25
            motionManager.startDeviceMotionUpdates(to: motionQueue, withHandler: onMotionUpdate)
        }
    }
    
    func onMotionUpdate(data: CMDeviceMotion...