※ iPhone6 not more terminals and do not work
Swift 3.0
//
// ViewController.swift
// coremotion004
//
// Created by akimach on 2016/08/24.
// Copyright © 2016年 akimacho. All rights reserved.
//
import UIKit
import CoreMotion
class ViewController: UIViewController {
var myCMAltimeter: CMAltimeter!
var myAltimeter: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// CMAltimeterを取得.
myCMAltimeter = CMAltimeter()
// CMAltimeterが利用できるか(iPhone5SではNoが返ってくる).
let isAltimeter = CMAltimeter.isRelativeAltitudeAvailable()
// UITextFieldを作成.
myAltimeter = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 30))
// 枠の線を表示.
myAltimeter.borderStyle = UITextBorderStyle.roundedRect
// UITextFieldの表示する位置.
myAltimeter.layer.position = CGPoint(x:self.view.bounds.width/2,y:100)
// Viewに追加.
self.view.addSubview(myAltimeter)
// Altimeterのモニタリングのスタート.
if !isAltimeter {
print("not use altimeter")
return
}
myCMAltimeter.startRelativeAltitudeUpdates(to: OperationQueue.main, withHandler: {(altimeterData, error) in
if let e = error {
print(e.localizedDescription)
}
guard let data = altimeterData else {
return
}
self.myAltimeter.text = "Altitude: \(data.relativeAltitude)"
})
}
}
Swift 2.3
//
// ViewController.swift
// coremotion004
//
// Created by akimach on 2016/08/24.
// Copyright © 2016年 akimacho. All rights reserved.
//
import UIKit
import CoreMotion
class ViewController: UIViewController {
var myCMAltimeter: CMAltimeter!
var myAltimeter: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// CMAltimeterを取得.
myCMAltimeter = CMAltimeter()
// CMAltimeterが利用できるか(iPhone5SではNoが返ってくる).
let isAltimeter = CMAltimeter.isRelativeAltitudeAvailable()
// UITextFieldを作成.
myAltimeter = UITextField(frame: CGRectMake(0,0,200,30))
// 枠の線を表示.
myAltimeter.borderStyle = UITextBorderStyle.RoundedRect
// UITextFieldの表示する位置.
myAltimeter.layer.position = CGPoint(x:self.view.bounds.width/2,y:100)
// Viewに追加.
self.view.addSubview(myAltimeter)
// Altimeterのモニタリングのスタート.
if !isAltimeter {
print("not use altimeter")
return
}
myCMAltimeter.startRelativeAltitudeUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: {(altimeterData, error) in
if let e = error {
print(e.localizedDescription)
}
guard let data = altimeterData else {
return
}
self.myAltimeter.text = "Altitude: \(data.relativeAltitude)"
})
}
}
2.3と3.0の差分
CGRectMake(CGFloat, CGFloat, CGFloat, CGFloat)からCGRect(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat)に変更
UITextBorderStyle.RoundedRectからUITextBorderStyle.roundedRectに変更
CMAltimeter.startRelativeAltitudeUpdatesToQueue(NSOperationQueue, withHandler: CMAltitudeHandler)からCMAltimeter.startRelativeAltitudeUpdates(to: OperationQueue, withHandler: CMAltitudeHandler)に変更
NSOperationQueue.mainQueue()からOperationQueue.mainに変更
http://docs.fabo.io/swift/coremotion/img/CoreMotion004.png
Reference
CMAltimeter
https://developer.apple.com/reference/coremotion/cmaltimeter
NSOperationQueue
https://developer.apple.com/library/mac/documentation/Cocoa/Reference/NSOperationQueue_class/
https://developer.apple.com/reference/foundation/nsoperationqueue
Reference
CMAltimeter
https://developer.apple.com/reference/coremotion/cmaltimeter
NSOperationQueue
https://developer.apple.com/library/mac/documentation/Cocoa/Reference/NSOperationQueue_class/
https://developer.apple.com/reference/foundation/nsoperationqueue
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.