10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【swift】 バッテリ残量と充電ステータス表示

Posted at

前置き

バッテリ残量とか、充電ステータスとかによって、
画面表示がいろいろ切り替わるような機能を作りたいと思って、
とりあえずまずはそのあたりを拾うコードの確認をしました。

開発環境

前回まで書いてなかったけど、これがすごく大事だな〜って最近すごく痛感してます。
端末:MacBook Pro/MacOS 10.14.5(Mojave)
Xcode:10.2.1
Swift:5

画面イメージ

充電してる時
充電してない時

ソース

※storyboardの設定は割愛します。
 UILabelを3つ配置した以外は何もしてないので。

viewController.swift
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var lblBattery: UILabel!
    @IBOutlet weak var lblCharge: UILabel!
    @IBOutlet weak var lblChargeStatus: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        DispInitialize()
        
        timerFiring()
    }
    
    func timerFiring() {
        let timer = Timer(timeInterval: 1,
                          target: self,
                          selector: #selector(getBatteryStatus),
                          userInfo: nil,
                          repeats: true)
        RunLoop.main.add(timer, forMode: .default)
    }
    
    func DispInitialize() {
        lblBattery.isEnabled = false
        lblCharge.isEnabled = false
        lblChargeStatus.isEnabled = false
        lblCharge.text = "充電してるかって?"
    }
    
    @objc func getBatteryStatus() {
        UIDevice.current.isBatteryMonitoringEnabled = true
        
        let batRemain = UIDevice.current.batteryLevel
        lblBattery.text = NSString(format: "%.1f", batRemain * 100) as String + "%"
        let batStatus: UIDevice.BatteryState = UIDevice.current.batteryState
        switch batStatus {
        case .charging:
            lblChargeStatus.text = "充電中ですよ。"
        case .full:
            lblChargeStatus.text = "フルチャージ!!"
        case .unplugged:
            lblChargeStatus.text = "充電してないっす。"
        case .unknown:
            lblChargeStatus.text = "わかんね。"
        default:
            lblChargeStatus.text = "マジでわかんね。"
        }
        
        UIDevice.current.isBatteryMonitoringEnabled = false
    }
}

まとめ

”実装”ってほどでもないけど、今回はてこずらずにサラッと第1段階はクリアできた。(いっつも何かとサンプル通りにソース書いても同じように動かなくて詰まることが多い。)

内容とは直接関係ないけど、画像の貼り方(サイズ調整と枠線のつけ方)を下記エントリを参考にさせて貰いました。markdownも使いこなしたい。

・Markdown の画像に枠線をつける
https://qiita.com/nori-dev-akg/items/b9f1709418f39a473d08

・markdownでの画像リサイズ
https://qiita.com/shti_f/items/b819d7fd8cb79ae29687

10
9
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
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?