How to get safe area top and bottom insets in Swift 5

Viewed 1861

I am looking for a way to get safe area inset values for the top and bottom of the screen (to position content correctly in order to make it not covered by a notch or software home button).

I looked around stackoverflow and was able to find this approach, however I am getting deprecation warning in XCode saying that keyWindow should not be used.

let window = UIApplication.shared.keyWindow
let topPadding = window?.safeAreaInsets.top
let bottomPadding = window?.safeAreaInsets.bottom
2 Answers

After iOS13 keyWindow concept in iOS anymore as a single app can have multiple windows. So just take the first one :

    let window = UIApplication.shared.windows.filter {$0.isKeyWindow}.first
    let topPadding = window?.safeAreaInsets.top
    let bottomPadding = window?.safeAreaInsets.bottom
    

You could try using the view controller view to get the safe area, or you can solve the deprecation as below:

let window = UIApplication.shared.windows.filter {$0.isKeyWindow}.first
let topPadding = window?.safeAreaInsets.top
let bottomPadding = window?.safeAreaInsets.bottom

See also : https://stackoverflow.com/a/57899013/3172445

Related