Espacio inferior / relleno adicional en el iPhone X?

En el iPhone X en modo vertical, si establece una restricción inferior para el área segura en 0, terminará con un espacio adicional en la parte inferior de la pantalla. ¿Cómo logras programáticamente la altura de este relleno adicional?

Logré determinar manualmente la altura de este relleno que es 34 y aquí es cómo logré implementarlo con la detección de iPhone X:

Swift 4.0 y Xcode 9.0

if UIDevice().userInterfaceIdiom == .phone { switch UIScreen.main.nativeBounds.height { case 2436: //iPhone X self.keyboardInAppOffset.constant = -34.0 default: self.keyboardInAppOffset.constant = 0 } } 

¿Hay una manera más limpia de detectar la altura de este relleno?

En iOS 11, las vistas tienen una propiedad safeAreaInsets . Si obtienes la propiedad bottom de estas inserciones, puedes get la altura del relleno inferior mientras estás en el iPhone X:

 if #available(iOS 11.0, *) { let bottomPadding = view.safeAreaInsets.bottom // ... } 

(del mismo modo para el relleno superior con barra de estado)