iOS safeAreaLayoutGuide предоставляет полную высоту 812 для iPhone X - PullRequest
0 голосов
/ 13 мая 2018

Это также описано, но не получено ответа в Почему этот iPhone X UIView не получает safeAreaLayoutGuide?

Я создаю совершенно новое универсальное приложение iOS для одного просмотра и добавляю только эти три строки кода к viewDidLoad(). Я запускаю iPhone X Simulator в портретном режиме. Вот что я получаю:

let safeSize = view.safeAreaLayoutGuide.layoutFrame.size
// Returns (375.0, 812.0) — why full size?

let window = UIApplication.shared.delegate!.window!!
let safeSize2 = window.safeAreaLayoutGuide.layoutFrame.size
// Returns (375.0, 734.0) — this is what I expected.

Почему корневое представление контроллера корневого представления не возвращает ожидаемую безопасную область?

1 Ответ

0 голосов
/ 13 мая 2018

SafeAreaInsets:

Вы получаете безопасную область для обзора, применяя вставки в этом свойство прямоугольника границ представления. Если представление не в настоящее время установлен в иерархии представлений, или не отображается на экране , Краевые вставки в этом свойстве равны 0.

То же самое верно для SafeAreaLayoutGuide:

Когда вид виден на экране , это руководство отражает часть вид, который не покрыт панелями навигации, панелями вкладок, панелями инструментов, и другие предки.

Следовательно, поскольку вид еще не выложен в viewDidLoad или не виден, он равен 0 .. Когда вы сделаете это в viewDidLayoutSubviews, вы увидите, что он ненулевой, и установлены действительные вставки.

...