Status bar height in Swift Status bar height in Swift swift swift

Status bar height in Swift


Is there any problems with Swift 2.x:

UIApplication.sharedApplication().statusBarFrame.size.height

Swift 3 or Swift 4:

UIApplication.shared.statusBarFrame.height

Make sure UIKit is imported

import UIKit

In iOS 13, you will get a deprecated warning"

'statusBarFrame' was deprecated in iOS 13.0: Use the statusBarManager property of the window scene instead.

To fix this:

let height = view.window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0


Updated Answer Supporting iOS 13+ and older iOS Versions for Swift 5

 func getStatusBarHeight() -> CGFloat {    var statusBarHeight: CGFloat = 0    if #available(iOS 13.0, *) {        let window = UIApplication.shared.windows.filter {$0.isKeyWindow}.first        statusBarHeight = window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0    } else {        statusBarHeight = UIApplication.shared.statusBarFrame.height    }    return statusBarHeight}

Happy Coding!


This is what I use:

struct Screen { static var width: CGFloat {  return UIScreen.main.bounds.width } static var height: CGFloat {  return UIScreen.main.bounds.height } static var statusBarHeight: CGFloat {  let viewController = UIApplication.shared.windows.first!.rootViewController  return viewController!.view.window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0 }}

Then you can do:

Screen.statusBarHeight