Кнопка «Назад» UINavigationBar не отображается на iPhone X iOS 11

Я столкнулся с проблемой: когда я запускаю свое приложение на симуляторе iPhone SE, оно показывает кнопку «Назад» на панели навигации, как показано ниже.

введите описание изображения здесь

Но когда я запускаю одно и то же приложение на iPhone X, iPhone 8 и iPhone 8 плюс iOS 11 и XCode 9, на панели навигации нет кнопки «Назад», и она предназначена для всех ViewController, а не для конкретного viewController. Вот пример

введите описание изображения здесь

Может ли кто-нибудь сказать, почему это происходит.


person Waris Shams    schedule 20.09.2017    source источник
comment
Как настроить кнопку «Назад»?   -  person chengsam    schedule 21.09.2017
comment
пусть backButtonItem = UIBarButtonItem (customView: self.leftNavigationButton) self.navigationItem.setLeftBarButton (backButtonItem, анимированный: false)   -  person Waris Shams    schedule 21.09.2017


Ответы (2)


У меня была проблема, когда кнопка «Назад» была совсем немного. В консоли отладки на панели навигации показывалось несколько сломанных ограничений.

Я обнаружил, что эта строка в делегате приложения является проблемой.

 UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment( // Remove the text "Back" from the back button so only the back arrow is visible
        UIOffset(horizontal: -100, vertical:-100),
        for: UIBarMetrics.default
    )

попробуйте найти любые вызовы API внешнего вида в вашем коде и посмотрите, не изменяете ли вы смещения кнопок панели.

person Daniel Hakimi    schedule 21.09.2017

После некоторых усилий я узнал, что устанавливаю ведущее пространство представления перед установкой NavBarTitleView

navView.viewLeadingConstraint.constant = (UIDevice().isIPhone5 || UIDevice().isIPhone4) ? -15:-40

из-за приведенного выше кода моя кнопка «Назад» скрывается, поэтому я удалил приведенную выше строку кода и добавил следующий метод в NavView, который решает мою проблему.

override var intrinsicContentSize: CGSize {
    return UILayoutFittingExpandedSize
}
person Waris Shams    schedule 06.10.2017