В UIViewController
вы можете использовать верхнюю и нижнюю направляющие макета следующим образом:
let safeAreHeight = self.view.frame.height - self.topLayoutGuide.length - self.bottomLayoutGuide.length
Для UIView
вы можете использовать safeAreaLayoutGuide
с условной проверкой:
let verticalSafeAreaInset: CGFloat
if #available(iOS 11.0, *) {
verticalSafeAreaInset = self.view.safeAreaInsets.bottom + self.view.safeAreaInsets.top
} else {
verticalSafeAreaInset = 0.0
}
let safeAreaHeight = self.view.frame.height - verticalSafeAreaInset
Поскольку устройства под управлением iOS 9 и 10 не имеют безопасной области, по умолчанию можно установить значение 0.0.