it-swarm.com.ru

iPhone X - скрытая строка состояния перемещает панель навигации вверх

Я тестирую поведение iPhone X с помощью симулятора Xcode. По какой-то странной причине, если я скрываю строку состояния, панель навигации сдвигается вверх, в результате чего заголовок полностью исчезает и обрезаются левая и правая кнопки. Это происходит только на iPhone X.

Иллюстрация:

 enter image description here

Как я могу скрыть строку состояния и сохранить панель навигации в видимом положении?

ОБНОВИТЬ:

Пример проекта для вашего убеждения:

https://drive.google.com/file/d/0B5qJARV-Oc9ra1hvZkpXZm9lRUE/view?usp=sharing

21
Roi Mulia

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

 storyboard setup

Просто создайте другой контроллер вида и перетащите «Контейнерный вид» из библиотеки объектов. Это представление имеет ограничения сверху, снизу, впереди и сзади в безопасной области, все с константами, равными 0. Если вы перетащите управление из представления контейнера в контроллер навигации, вы получите возможность установить «embed segue» msgstr "который будет встраивать выбранный контроллер представления как дочерний контроллер представления.

Я установил строку состояния, чтобы быть скрытой на новом контроллере представления, который я создал, и он отлично работает.

 screenshot of working layout on iPhone X

Это похоже на то, что UINavigationBar должен обрабатывать автоматически, но этот обходной путь кажется, что он должен работать довольно хорошо.

Еще одно примечание: если вы измените цвет панели навигации, вам также потребуется создать другой вид над контейнером и изменить его цвет в соответствии с цветом панели навигации.

13
nathangitter

Я, для небольшого приложения, перешел от использования Push к модальному переходу и добавил в мою собственную панель навигации. Я использовал Push, потому что он выглядит хорошо, и у меня уже был Модал для другой части, которую я хотел по-другому анимировать по стилю.

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

0
Symanski

Я думаю, что вам нужно использовать "safeAreaLayoutGuide" новое обновление в iOS 11

Apple предоставила нам необходимые API для обхода небезопасных областей этого iphone x. Мы делаем это с помощью нового safeAreaLayoutGuide anchors в нашем коде safeAreaLayoutGuide

0
kishu mewara