Безопасная область iOS 9 Верхнее ограничение xib и раскадровки отличается - PullRequest
0 голосов
/ 01 ноября 2018

на iOS 9, iPhone 5, не происходит на iOS 10 и более поздних версиях

UIViewController создать из раскадровки, я установил красный subView view.top viewController равняется верхней части безопасной области, красный вид находится чуть ниже statusBar.

Если создать viewController из xib-файла, используйте init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?), а также установите красный view.top для subView равным верхней части безопасной области, красный вид находится в той же origin.y, что и statusBar. Как показано ниже:

ViewControllers, создаваемые из раскадровки, и xib - это один и тот же класс, возможно, создание из раскадровки и xib имеют разные настройки, я пытаюсь отменить выбор всех опций выбора раскадровки, но не нашел тот, который имеет значение.

Может кто-нибудь объяснить это? Спасибо!

Репо по этому вопросу: https://github.com/codingingBoy/SafeAreaDemo.

1 Ответ

0 голосов
/ 01 ноября 2018

Существуют проблемы обратной совместимости с XIB и руководствами Safe-Area со старыми версиями iOS, поскольку в файлах XIB их не было.

В текущем поведении обратного развертывания Xib (iOS 10 и более ранних) ограничение в безопасную область будет преобразовано в суперпредставление, поскольку XIB не имеет верхних и нижних направляющих макета.

Это может не обеспечить желаемого поведения макета, и мы рекомендуем вам обойти это дело одним из следующих вариантов:

1) переместить представление и макет в контроллер представления раскадровки

2) использовать выходы IB с соответствующими (верхним и нижним) ограничениями и программно заменять их ограничениями для верхнего / нижнего руководства по компоновке после установки вида

3) установить вид как подпредставление и программно добавить ограничения к верхним / нижним направляющим и сторонам макета.

Ссылка: https://forums.developer.apple.com/thread/87329

...