Верхнее ограничение безопасной зоны iOS 9 для xib и раскадровки отличается

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

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

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

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

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

Репозиторий для этого вопроса: https://github.com/codingBoy/SafeAreaDemo.


person John    schedule 01.11.2018    source источник


Ответы (1)


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

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

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

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

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

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

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

person DonMag    schedule 01.11.2018
comment
Спасибо за объяснение и решение! - person John; 02.11.2018