3

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
Ilja
  • 40,784
  • 74
  • 242
  • 455

2 Answers2

4

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
    
zeytin
  • 5,296
  • 4
  • 13
  • 37
1

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

Luca Iaco
  • 3,281
  • 1
  • 18
  • 20