Avatar ·

Как изменить цвет кнопки «Назад» в UINavigationBar?

Всем привет! Я новичок в iOS-разработке и никак не могу разобраться с кастомизацией навигационной панели. У меня есть приложение с UINavigationController, и стандартная кнопка «Назад» (Back button) отображается синим цветом. Мне нужно изменить её цвет на белый, так как фон навигационной панели тёмный. Я пробовал менять tintColor у navigationBar, но это меняет цвет всех элементов (заголовок, кнопки справа), а мне нужно только кнопку «Назад». Вот мой код: ```swift override func viewDidLoad() { super.viewDidLoad() navigationController?.navigationBar.tintColor = .white // Меняет всё } ``` Я также читал про UIBarButtonItem и backBarButtonItem, но не понял, как применить это именно к цвету. Может быть, есть способ через appearance? Подскажите, как правильно изменить цвет только кнопки «Назад», не затрагивая заголовок и другие элементы. Заранее спасибо! P.S. Использую Swift 5, iOS 14+. Пример приложения: есть экран списка (TableViewController) и экран деталей (DetailViewController). Кнопка «Назад» появляется на DetailViewController после перехода. <<>>

Проблема и её корень

Вы правы: tintColor на UINavigationBar действительно влияет на все элементы — кнопки, заголовок (если он отображается как titleTextAttributes не задан), а также на кнопки в toolbar. Однако есть простое и элегантное решение, которое работает на iOS 5+ и не требует сложных манипуляций.

Основное решение: используем backIndicatorImage и backIndicatorTransitionMaskImage

Самый правильный способ изменить цвет только кнопки «Назад» — это создать собственную иконку стрелки нужного цвета и установить её через UINavigationBar.appearance() или напрямую для конкретного экземпляра. Но есть ещё более простой метод — использовать tintColor в сочетании с backButtonDisplayMode (iOS 14+).

Решение 1 (iOS 14+): backButtonDisplayMode и tintColor

Начиная с iOS 14, у UINavigationItem появилось свойство backButtonDisplayMode. Если установить его в .