Измените изображение кнопки «Назад» и добавьте поле в навигационную панель UIKit.IOS

Программируем под IOS
Ответить
Anonymous
 Измените изображение кнопки «Назад» и добавьте поле в навигационную панель UIKit.

Сообщение Anonymous »

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

Код: Выделить всё

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
}
Ни один из приведенных выше кодов не помог мне обновить изображение или положение кнопки «Назад».
Один вопрос, который вы можете задать: звоню ли я кому-нибудь из это с правильного места, это происходит не при запуске приложения, а при инициализации контроллера навигации и применении большей части других моих стилей.
Пожалуйста, может кто-нибудь подсказать, что я могу сделать, чтобы изменить изображение и положение кнопки «Назад»?
Я не хочу потеряю жест смахивания для открытия экрана, поэтому мне немного не хочется создавать собственную кнопку панели навигации.
Я вижу, что такие приложения, как Medium и Spotify, имеют собственное изображение кнопки возврата навигации, настраиваемые отступы и также жест смахивания для открытия экрана.

Подробнее здесь: https://stackoverflow.com/questions/793 ... igationbar
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»