Некоторые варианты, с которыми я столкнулся, заключались в настройке заголовка элемента управления представлением. в строку с пробелом, а также добавить пользовательскую кнопку.
Кажется, что пользовательская кнопка также удаляет встроенный жест смахивания для открытия экрана, поэтому я выбрал этот подход.
Код: Выделить всё
extension UINavigationBar {
func applyAppearance(backgroundColor: UIColor, textColor: UIColor) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = backgroundColor
appearance.shadowColor = .clear
appearance.titleTextAttributes = [.foregroundColor: textColor]
// This removes the text from all back buttons
let backButtonAppearance = UIBarButtonItemAppearance(style: .plain)
backButtonAppearance.normal.titleTextAttributes = [.foregroundColor: UIColor.clear]
appearance.backButtonAppearance = backButtonAppearance
tintColor = textColor
standardAppearance = appearance
scrollEdgeAppearance = appearance
compactScrollEdgeAppearance = appearance
}
}

Поэтому я начал искать способы увеличить это значение отступы/поля на слева от заднего шеврона
Я пробовал следующее:
Код: Выделить всё
// This didn't change the back button's position but impacted my search bar
layoutMargins = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 0)
// This did nothing as well, probably as the name suggests, it changes the text position rather than the image
let backButtonAppearance = UIBarButtonItemAppearance(style: .plain)
backButtonAppearance.normal.titlePositionAdjustment = UIOffset(horizontal: 20, vertical: 0)
Код: Выделить всё
extension UINavigationBar {
func applyAppearance(backgroundColor: UIColor, textColor: UIColor) {
let appearance = UINavigationBarAppearance()
if let image = UIImage(named: "chevron.left")?.withRenderingMode(.alwaysOriginal) {
appearance.setBackIndicatorImage(image, transitionMaskImage: image)
}
standardAppearance = appearance
scrollEdgeAppearance = appearance
compactScrollEdgeAppearance = appearance
}
}
Код: Выделить всё
if let image = UIImage(systemName: "chevron.down")?.withRenderingMode(.alwaysOriginal) {
UINavigationBar.appearance().backIndicatorTransitionMaskImage = image
UINavigationBar.appearance().backIndicatorImage = image
}
Один вопрос, который вы можете задать: звоню ли я кому-нибудь из это с правильного места, это происходит не при запуске приложения, а при инициализации контроллера навигации и применении большей части других моих стилей.
Пожалуйста, может кто-нибудь подсказать, что я могу сделать, чтобы изменить изображение и положение кнопки «Назад»?
Я не хочу потеряю жест смахивания для открытия экрана, поэтому мне немного не хочется создавать собственную кнопку панели навигации.
Подробнее здесь: https://stackoverflow.com/questions/793 ... igationbar
Мобильная версия