iOS - 按下后退按钮时的导航栏颜色转换

时间:2016-11-14 10:51:10

标签: ios colors uinavigationbar transition

我在导航堆栈中使用barTintColor推送视图控制器时尝试更改导航栏的颜色(_:willShow:animated :)。

以下是代码:

  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)
    }
  }

当我按下视图控制器并使用向后滑动手势时,一切都很美妙(颜色过渡在两个方面都很平滑)。

但是当我按下后退按钮时,颜色最初不会改变,导航过渡完成,然后颜色改变而没有动画

有没有人遇到/解决了这个问题?任何线索都将受到赞赏。

2 个答案:

答案 0 :(得分:2)

我有完全相同的问题,所以用自定义左栏按钮替换了“后退”按钮,并调用:

navigationController?.popViewController(animated: true)

编辑:

设置leftBarButton导致滑动手势丢失,所以我需要另一个黑客攻击:

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

答案 1 :(得分:0)

我最终使用了KMNavigationBarTransition library,效果非常好,并且不需要一行代码。