IPhone X - Скрытая строка состояния перемещает панель навигации вверх
Я тестирую поведение iPhone X с помощью симулятора Xcode. По какой-то странной причине, если я скрываю строку состояния, панель навигации сдвигается вверх, заставляя заголовок полностью исчезать и вырезая левую и правую кнопки. Это происходит только на iPhone X.
Иллюстрация:
![введите описание изображения здесь]()
Как скрыть строку состояния и удерживать панель навигации в видимой позиции?
UPDATE:
Пример проекта для вашего убеждения:
https://drive.google.com/file/d/0B5qJARV-Oc9ra1hvZkpXZm9lRUE/view?usp=sharing
Ответы
Ответ 1
Одним из решений является встраивание контроллера навигации в контроллер представления контейнера, который должным образом привязан к безопасной зоне.
![настройка раскадровки]()
Просто создайте другой контроллер представления и перетащите "Контейнерный вид" из библиотеки объектов. Этот вид имеет верхнюю, нижнюю, ведущую и конечную ограничения для безопасной области, все с константами, равными 0. Если вы управляете перетаскиванием из представления контейнера контроллеру навигации, вы получите возможность установить "встроить segue", который будет встраивать выбранный контроллер представления в качестве контроллера детского представления.
Я установил строку состояния для скрытия на новом контроллере представления, который я создал, и он отлично работает.
![снимок экрана рабочего макета на iPhone X]()
Это похоже на то, что UINavigationBar
должно обрабатывать автоматически, но это обходное решение кажется, что оно должно работать очень хорошо.
Другое примечание: если вы измените цвет панели навигации, вам также нужно будет создать еще один вид над представлением контейнера и изменить его цвет, чтобы он соответствовал цвету панели навигации.
Ответ 2
I, для небольшого приложения, изменилось с использования Push на Modal segue и добавления в мою собственную панель навигации. Я использовал Push, потому что он выглядит хорошо, и у меня уже был Modal для другой части, которую я хотел по-разному аниматировать по причинам стиля.
Для небольших приложений это может быть самым быстрым и простым решением, но для моего следующего обновления мне нужно использовать контроллер навигации. Для этого я думаю, что я включу строку состояния, что для меня не имеет большого значения и позволяет ей работать.
Ответ 3
Я думаю, вам нужно использовать "safeAreaLayoutGuide" новое обновление в iOS 11
Apple предоставила нам необходимые API, чтобы обойти небезопасные регионы этого iphone x. Мы делаем это, используя новый safeAreaLayoutGuide якорь в нашем коде
safeAreaLayoutGuide