LoginSignup
3
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-11-28

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

fullsizeoutput_10e3.jpeg

共有すること

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

Storyboardを使わずに、要素を配置する方法

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の実機を使って、現在地の気圧を取得する方法

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で文字を表示

② iPhoneの実機を使って、現在地の気圧を取得する方法
Qiita 台風が来るのでiPhone6で気圧計を作る

コード例

下記コードをViewCntroller.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

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3