Безопасная область iOS 9 Верхнее ограничение xib и раскадровки отличается
На iOS 9, iPhone 5, не происходит на iOS 10 и более поздних версиях
UIViewController создать из раскадровки, я установил красный viewView viewController's view.top равняется верхней части безопасной области, красный вид находится чуть ниже statusBar.
Если создать viewController из файла XIB, используйте init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)
а также установите красный вид subView view.top равным верху безопасной области, красный вид находится в той же origin.y, что и statusBar. Как показано ниже:
ViewControllers, создаваемые из раскадровки, и xib - это один и тот же класс, возможно, create из раскадровки и xib имеют разные настройки, я пытаюсь отменить выбор всех опций выбора раскадровки, но не нашел того, который имеет значение.
Кто-нибудь может это объяснить? Спасибо!
Репо для этого вопроса: https://github.com/codingingBoy/SafeAreaDemo.
1 ответ
Существуют проблемы обратной совместимости с XIB и руководствами Safe-Area со старыми версиями iOS, поскольку в файлах XIB их не было.
В текущем поведении обратного развертывания Xib (iOS 10 и более ранних) ограничение на безопасную область будет преобразовано в суперпредставление, потому что XIB не имеет верхних и нижних направляющих макета.
Это может не достичь желаемого поведения макета, и мы рекомендуем обойти это дело одним из следующих вариантов:
1) переместите представление и макет в контроллер представления раскадровки
2) использовать выходы IB с соответствующими (верхним и нижним) ограничениями и программно заменять их ограничениями для верхнего / нижнего руководства по компоновке после установки представления
3) установить вид как подпредставление и программно добавить ограничения к верхним / нижним направляющим и сторонам макета.