Почему дополнительныеSafeAreaInsets распространяются на дочерние VC? - PullRequest
0 голосов
/ 24 сентября 2018

Нет никаких свидетельств этого в соответствии с документацией Apple, но я обнаружил, что additionalSafeAreaInsets распространяется на childVCs, но это явно так.

Запуск этой сущности наИмитатор iPhone 7 выведет, что и контейнерный VC, и дочерний VC имеют нижнюю безопасную область 88, когда я ожидаю, что только контейнерный VC будет иметь любую, а взамен ChildVC будет иметь 0 (и на iPhone X и новее)., только сумма, необходимая для индикатора Home).

Есть ли способ получить такое поведение?

Спасибо!

1 Ответ

0 голосов
/ 24 сентября 2018

Разве это не доказательство из Документации Apple ?

Контроллеры представления контейнера UIKit уже настраивают безопасную область своих дочерних контроллеров представления для учета представлений содержимого.Например, навигационные контроллеры расширяют безопасную область своих дочерних контроллеров представления, чтобы учитывать панель навигации.

Кстати, это не распространение .Это более умная вещь, которая имеет большой смысл.Если вы установите для своей ContainerViewController ее безопасной области значение 80 points снизу, а ChildViewController перекрывает X точек области, UIKit автоматически установит безопасную область для этого дочернего контроллера представления на Xбаллов, так что ни одно подпредставление не может выйти из вашей безопасной зоны.

Например, если вы установите childVC такие ограничения

NSLayoutConstraint.activate([
    childVC.view.heightAnchor.constraint(equalToConstant: childVCHeight),
    childVC.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
    childVC.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
    // move childVC 30 points to the top
    childVC.view.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -30)
])

В журнале вы увидите, ChildViewController высота безопасной области равна 50. Это как раз высота перекрытия.

...