［iOS］Storyboardを使わずに、気圧計アプリを作成する方法

# Storyboardを使わずに、気圧計アプリを作成する方法
<img width="375" alt="fullsizeoutput_10e3.jpeg" src="https://qiita-image-store.s3.amazonaws.com/0/199441/4062d3d8-8ccd-7041-4159-69f64be86b1e.jpeg">

## 共有すること
① Storyboardを使わずに、要素を配置する方法
② iPhoneの実機を使って、現在地の気圧を取得する方法

### Storyboardを使わずに、要素を配置する方法
```swift:example
//ラベルの位置・大きさの指定
let label:UILabel = UILabel(frame:CGRect(x:0,y:0,width:self.view.bounds.width,height:100))

//ラベルの背景色指定
label.backgroundColor = .black

//ラベルの文字指定
label.text = "SAMPLE"

//ラベルの文字色指定
label.textColor = .white

//ラベルの文字中央揃え
label.textAlignment = .center

//このコードを追加しないと反映されない
self.view.addSubview(label)
```

### iPhoneの実機を使って、現在地の気圧を取得する方法
```swift:example
import CoreMotion

func startUpdate(){
  if (CMAltimeter.isRelativeAltitudeAvailable()) {
  pressureData.startRelativeAltitudeUpdates(to: OperationQueue.main, withHandler:
     {data, error in
      if error == nil {
       let pressure:Double = Double(data!.pressure)
       number.text = String(format: "%.1f",pressure*10)
       print(Date(),String(format: "%.1f",pressure*10))
     }
    })
  } else{
   print("error")
 }
}
     
startUpdate()
```

## 開発環境
Xcode 9.1
Swift 4.0
iOS 11.1.2
iPhone 7

## 参考資料
① Storyboardを使わずに、要素を配置する方法
[逆引きSwift UILabelで文字を表示](http://docs.fabo.io/swift/uikit/001_uilabel.html)

② iPhoneの実機を使って、現在地の気圧を取得する方法
[Qiita 台風が来るのでiPhone6で気圧計を作る](https://qiita.com/bellx2/items/fc1de7197f583001ca59)

## コード例
下記コードをViewCntroller.swiftに入力後、実機を接続すると現在地の気圧が得られる。

```swift:ViewController.swift
//
//  ViewController.swift
//  air pressure
//
//

import UIKit
import CoreMotion

class ViewController: UIViewController {
    
    var pressureData = CMAltimeter()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        var posY:CGFloat = (self.view.bounds.height)/2 - 150
        
        let label:UILabel = UILabel(frame: CGRect(x: 0, y:posY , width: self.view.bounds.width, height: 100))
        label.backgroundColor = .black
        label.text = "PRESSURE"
        label.font = UIFont.systemFont(ofSize: CGFloat(50), weight: .bold)
        label.textColor = .white
        label.textAlignment = .center
        self.view.addSubview(label)
        
        let number:UILabel = UILabel(frame: CGRect(x: 0, y: posY + 100, width: self.view.bounds.width, height: 100))
        number.backgroundColor = .white
        number.text = "-----.-"
        number.font = UIFont.systemFont(ofSize: CGFloat(50), weight: .bold)
        number.textColor = .black
        number.textAlignment = .center
        self.view.addSubview(number)
        
        let hPa:UILabel = UILabel(frame: CGRect(x: 0, y: posY + 200, width: self.view.bounds.width, height: 100))
        hPa.backgroundColor = .white
        hPa.text = "hPa"
        hPa.font = UIFont.systemFont(ofSize: CGFloat(50), weight: .bold)
        hPa.textColor = .black
        hPa.textAlignment = .center
        self.view.addSubview(hPa)
        
        func startUpdate(){
            if (CMAltimeter.isRelativeAltitudeAvailable()) {
                pressureData.startRelativeAltitudeUpdates(to: OperationQueue.main, withHandler:
                    {data, error in
                        if error == nil {
                            let pressure:Double = Double(data!.pressure)
                            number.text = String(format: "%.1f",pressure*10)
                            print(Date(),String(format: "%.1f",pressure*10))
                        }
                })
            } else{
                print("error")
            }
        }
        
        startUpdate()
       
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }


}
```

## 備考
端末の向きが変わってもアプリを回転させないためには、
Device Orientation を Portrait だけにすれば良い。

![スクリーンショット 2017-11-28 10.28.32.png](https://qiita-image-store.s3.amazonaws.com/0/199441/916857a1-5eb0-bbb5-a01c-e7594ea34157.png)