Ио 11 & картинки х: UINavigationBar's на панели инструментов интервалы неправильно врезанный в UITabBarController
Я испытываю досадная проблема тестирования новой iOS 11 на iPhone симулятор.
У меня есть UITabBarController и внутри каждой вкладки есть UINavigationController
, каждый UINavigationBar
определены также в нижней панели инструментов (setToolbarHidden:
), и по умолчанию они появляются внизу, прямо над вкладками.
Он до сих пор работает нормально, и, кажется, работает нормально и в предстоящие iPhone 8 и 8 моделей плюс, но на iPhone Х есть промежуток между панелью инструментов и вкладками. Мое предположение заключается в том, что панели инструментов не'т понимаете, что будет отображаться в панели вкладок, а затем покидает вмещающее пространство внизу.
Я думаю, единственный способ отремонтировать его будет использовать пользовательскую панель инструментов и дисплей/анимировать сам вместо того, чтобы использовать UINavigationBar по умолчанию, но хотелось бы услышать другие варианты :)
- Вот как это выглядит на iPhone 8.
- А вот это проблема на iPhone Х.
Я подал это как radr://проблемы/34421298, который был закрыт, так как является дубликатом проблемы radr:///34462371. Однако, в последней бета-версии Xcode версии 9.2 (9C32c) с iOS 11.2, это, кажется, быть исправлены. Здесь'ы пример мое приложение работает в симуляторе каждого устройства, без каких-либо изменений между ними.
Это'т действительно решение проблемы, кроме того, что немного терпения, возможно, решить ее без необходимости прибегать к ИП хитрости. Мое предположение, что iOS 11.2 будет до конца года, поскольку она'ы, необходимые для поддержки HomePod.
Если вы Don'т считаю оборотов можно попробовать манипулировать слой панели как очень замысловато, но быстрое решение.
К сожалению, анимации не'т выглядеть хорошо, когда дело доходит до такого подхода. В таком случае, добавление пользовательской панели инструментов вместо стандартного будет лучшим решением.
выпустила iOS 11.1 и iPhone Х и этот баг/особенность, это'т еще. Так я реализовал этот метод. Этот код работает в iOS 9.0+.
Просто установите этот класс В вашей раскадровке, как навигационный контроллер'S-класса. Он будет использовать пользовательскую панель инструментов в iPhone X с правильной ограничения макета, и возвращается к родным в другие устройства. Пользовательская панель инструментов добавляется к навигации контроллер's посмотреть, а не ваш контроллер представления, чтобы сделать переходы более плавными.
toolbarItems вашего контроллера представления, чтобы обновить интерфейс. Если вы установите
toolbarItems` собственность навигационный контроллер, вы можете игнорировать этот шаг.Он имитирует все родное панели инструментов поведения (включая изменение высоты панели в портретном/ландшафтном режимах), кроме пуш/поп-анимации.
Я нашел только одно решение: добавить панель инструментов непосредственно к контроллеру вид
Apple до сих пор еще не исправили этот баг в iOS 11.2. Происходит от Хусейн мусавиан'ы решение, вот простой подход, который я взял.
Я взял этот подход, потому что у меня только один UITableViewController, где эта ошибка происходит. Так что в моем случае, я просто добавил следующий код, перечисленных ниже, чтобы мой файл ViewController (который является UITableViewController), где эта ошибка происходит.
Преимущества:
И вот код:
1.Добавить startFixIPhoneXToolbarBug в свой viewWillAppear как это:
2.Добавить endFixIPhoneXToolbarBug в свой viewWillDisappear как это:
3.Реализации пуск/endFixIPhoneXToolbarBug в файле ViewController как это: