Если создать простое приложение, с 1 UIViewController, и я вставлять его в панели навигации, вывод из следующего кодавопросы автоматической компоновки с несколькими раскадровки
override func viewDidAppear(animated: Bool) {
print ("...app height is \(UIScreen.mainScreen().bounds.height)")
print ("...win height is \(self.view.frame.size.height)")
}
результатов в следующее:
...app height is 1024.0
...win height is 980.0
вид имеет смысл, я думаю, так как разница в счетах размера для высоты навигационной панели, которая составляет 44 баллов.
Теперь у меня есть проблемы с приложением, которое делает использование нескольких раскадровок, и когда я переход от одного раскадровки к другому, тот же код будет возвращать:
...app height is 1024.0
...win height is 1024.0
Странно, так как раскадровки есть uiview, встроенный в контроллер навигации. Это вызывает проблемы с автоматической компоновкой, поскольку размер навигационной панели не учитывается. Однако, если я поворачиваю представление или удаляюсь от него, проблема, похоже, сама решает.
Итак, наконец, вопрос: как я могу обеспечить правильный учет навигационной панели, чтобы не возникало проблем с макетом при навигации между раскадровки? Я пробовал форсировать setNeedsDisplay() и setNeedsLayout() безрезультатно. Любые мысли/идеи/исправления будут оценены.
Спасибо @jackal. Ваш ответ должен работать, но, похоже, моя проблема связана с настраиваемым переходом, настроенным с помощью UIViewControllerAnimatedTransitioning, что нарушает поведение edgeForExtendedLayout. Я объясню ниже. – Plutovman
Это странно ... Я использую пользовательскую анимацию, используя UIViewControllerAnimatedTransitioning. и делает это разрывает edgeForExtendedLayout. Этот [post] (http://stackoverflow.com/questions/33109454/edgesforextendedlayout-ignored-on-ios9-when-using-custom-animation) описывает поведение, которое я вижу. – Plutovman
@Plutovman, все выглядит правильно для меня в этом посте. Я отредактировал свой ответ и добавил недостающую часть, связанную с непрозрачными барами – jackal