Search code examples
iosswiftobjective-csafearealayoutguide

Get safe area inset top and bottom heights


What would be the most proper way to get both top and bottom height for the unsafe areas?

enter image description here


Solution

  • Try this :

    In Objective C

    if (@available(iOS 11.0, *)) {
        UIWindow *window = UIApplication.sharedApplication.windows.firstObject;
        CGFloat topPadding = window.safeAreaInsets.top;
        CGFloat bottomPadding = window.safeAreaInsets.bottom;
    }
    

    In Swift

    if #available(iOS 11.0, *) {
        let window = UIApplication.shared.keyWindow
        let topPadding = window?.safeAreaInsets.top
        let bottomPadding = window?.safeAreaInsets.bottom
    }
    

    In Swift - iOS 13.0+

    // Use the first element from windows array as KeyWindow deprecated

    if #available(iOS 13.0, *) {
        let window = UIApplication.shared.windows.first
        let topPadding = window.safeAreaInsets.top
        let bottomPadding = window.safeAreaInsets.bottom
    }
    

    In Swift - iOS 15.0+

    // Use the keyWindow of the currentScene

    if #available(iOS 15.0, *) {
        let window = UIApplication.shared.currentScene?.keyWindow
        let topPadding = window.safeAreaInsets.top
        let bottomPadding = window.safeAreaInsets.bottom
    }