[Swift] status bar 的高度計算

2018110115:55
當接聽電話或是開啟熱點 (Hotspot) 時
會像這樣多了一列 高度20pt 的提示列
某些情境,沒注意的話 會造成畫面異常



dropbox
navigation bar 被遮住



navigation bar 多了 20pt 的空白


以上是舊款 iPhone 5~8

若是 iPhone X 系列,則不會增加一條 20pt 的提示列
會像這樣:



標準的 status bar 是 20pt
用這個 API 可取得目前的 stauts bar 高度
 let statusHeight = UIApplication.shared.statusBarFrame.size.height // 20 or 40
 print("statusHeight=\(statusHeight)")
       


若要希望 APP 內隨時監控狀態列是否變動
則:
override func viewDidLoad() {

    NotificationCenter.default.addObserver(self,
              selector: #selector(statusBarChanged),
              name: NSNotification.Name.UIApplicationWillChangeStatusBarFrame, object: nil)

    //do something

}

@objc func statusBarChanged() {
        
    let statusHeight = UIApplication.shared.statusBarFrame.size.height
    print("statusHeight=\(statusHeight)")

    //do something

}