🌟
Swiftで近接センサーを実装する
はじめに
この記事はCyberAgent 22 新卒 Advent Calendar 2021の22日目の記事です
Swiftで近接センサーを実装するにあたって調べたところ、かなり古い記事しかなかったためまとめてみます。
近接センサーというのは通話の際などにiPhone上部のセンサーに近づくことで一時的にスリープ状態にする実装を指しています。
実装
コードの全容は以下のようになります。
ViewController.swift
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UIDevice.current.isProximityMonitoringEnabled = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
UIDevice.current.isProximityMonitoringEnabled = false
}
これだけのコードで近接センサーを実装することができます。
近接センサーを有効にしたい画面のviewWillAppear内でviewが表示される直前にセンサーを有効にし、viewWillDisappearでviewが表示されなくなる直前にセンサーを無効にすることで他画面でセンサーが反応し、スリープしてしまわないようにしています
全画面で近接センサーを有効したい場合はviewDidLoad内へ記述のみで大丈夫です。
センサーによってUIを変化させるなどのカスタマイズを行いたい場合は、viewDidAppearに以下のようなコードを追加します。
ViewController.swift
NotificationCenter.default.addObserver(self, selector: #selector(proximitySensorState), name: UIDevice.proximityStateDidChangeNotification, object: nil)
@objc func proximitySensorState() {
if UIDevice.current.proximityState == true {
print("センサーに近づいた")
} else{
print("センサーから離れた")
}
}
UIDevice.current.proximityStateを取得することでセンサーの状態によって処理を変えることができます。
Discussion