Я использую пользовательскую кнопку возврата в своем приложении. Эта пользовательская кнопка возврата настроена глобально следующим образом:
UINavigationBar.appearance().backIndicatorImage = UIImage(named: "Back").withRenderingMode(.alwaysOriginal)
UINavigationBar.appearance().backIndicatorTransitionMaskImage = UIImage(asset: .back).withRenderingMode(.alwaysOriginal)
Перед iOS 11 этот код сделал трюк, но теперь в iOS 11 кнопка больше не центрирована по вертикали, как вы можете видеть здесь:
Я мог бы изменить высоту обратного изображения кнопки на 44, но это сломало бы его в iOS < 11. Я мог бы также использовать два разных изображения, но я искал что-то более чистое, как способ вертикального центрирования изображения в виде контейнера задней кнопки.
EDIT:
Оказывается, проблема, вызванная banxii1988, вызвана setBackButtonTitlePositionAdjustment
, когда значения намеренно перемещают заголовок за пределы видимого экрана. Это был взлом, чтобы избежать удаления заголовка кнопки в каждом контроллере. Я решил удалить этот хак, и я поступил правильно:
- установите элемент обратной кнопки в раскадровке на
" "
. - в каждом контроллере представления без связанного раскадровки, я установил
backBarButtonItem
программноnavigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
Обратите внимание, что заголовок кнопки назад, который вы видите в контроллере представления, установлен в предыдущем в стеке навигации.