読者です 読者をやめる 読者になる 読者になる

Swiftで加速度センサの値を表示する

iPhone6sの加速度センサで取得した値をラベルに表示するサンプルです。ほぼこちらのコードそのままです。こちらのサイトは機能ごとにシンプルなコードを紹介していて、Swiftを用いたiOSアプリ制作を勉強するのに最適です。今回はSwiftの仕様の変更があったようで、こちらを参考に若干修正しています。

動作環境 : iPhone6s iOS9.2
開発環境 : XCode7.2

//
//  ViewController.swift
//  AccelerometerSample
//


import UIKit
import CoreMotion

class ViewController: UIViewController {
    
    var myMotionManager: CMMotionManager!

    // ストーリーボードを使ってプロパティを作成
    @IBOutlet weak var xValue: UILabel!
    @IBOutlet weak var yValue: UILabel!
    @IBOutlet weak var zValue: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        myMotionManager = CMMotionManager()
        
        // 加速度計の更新周期を設定
        myMotionManager.accelerometerUpdateInterval = 0.1
        
        // 加速度取得
        // Handlerに渡す引数はオプショナルとする。
        myMotionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: {(accelerometerData:CMAccelerometerData?, error:NSError?) -> Void in
            // オプショナルとして渡されたデータは!でアンラップする
            self.xValue.text = "x=\(accelerometerData!.acceleration.x)"
            self.yValue.text = "y=\(accelerometerData!.acceleration.y)"
            self.zValue.text = "z=\(accelerometerData!.acceleration.z)"
        })
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}