2016-11-14 5 views
6

Я пытаюсь изменить цвет панели навигации при нажатии контроллера просмотра в стеке навигации, используя barTintColor во время навигацииController (_: willShow: анимированный :).iOS - переход цвета на навигационной панели при нажатии кнопки возврата

Вот код:

func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) { 
    if viewController is ViewerViewController { 
     navigationBar.barTintColor = UIColor(custom: .white) 
     navigationBar.tintColor = UIColor(custom: .black) 
    } else if viewController is FeedViewController { 
     navigationBar.barTintColor = UIColor(custom: .blue) 
     navigationBar.tintColor = UIColor(custom: .white) 
    } 
    } 

Все прекрасно работает, когда я нажимаю контроллер представления, и когда я использую салфетки жест назад (переход цвета гладко в обоих направлениях).

Однако, когда я нажимаю кнопку назад, цвет не изменяется при первом, навигация переход осуществляется, а затем цвет меняется, без анимации.

Кто-нибудь уже столкнулся/разрешил эту проблему? Любой ключ был бы оценен.

+0

если вы пишете код, то это будет легко для нас, чтобы определить, почему это произойдет –

ответ

0

Я закончил с использованием KMNavigationBarTransition library, который работает очень хорошо, и не требует ни одной строки кода.

0

У меня была точно такая же проблема, поэтому заменить кнопку «назад» с помощью кнопки пользовательской панели слева и называется:

navigationController?.popViewController(animated: true) 

редактировать:

установки leftBarButton вызывало потерю салфетки жест, так что мне нужен еще один хак:

navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "back"), style: .plain, target: self, action: #selector(pop)) 
navigationController?.interactivePopGestureRecognizer?.delegate = self 
+0

Это, к сожалению, теряет swipeToGoBack жест навигации контроллера :( –

+0

@OliverAtkinson добавление делегата interactivePopGestureRecognizer решает эту проблему –

+0

Спасибо, и что делает реализацию похоже, что этот жест делегата выглядит так? –