Как получить высоту безопасной зоны программно до IOS 11? - PullRequest
0 голосов
/ 19 декабря 2018

Без использования safeAreaLayoutGuide (я нацеливаюсь на IOS 9+), есть ли способ программно получить высоту «безопасной области» в IOS без необходимости создания нового представления (ограниченного безопасной областью) исключительно для этой цели?

Я не могу установить выход в безопасную область, потому что это не UIView ... или даже какой-либо класс.

И если я просто использую self.view.heightв ViewController он будет слишком высоким (неправильно).

Есть ли другой способ сделать это?

1 Ответ

0 голосов
/ 19 декабря 2018

В 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...