我在导航堆栈中使用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)
}
}
当我按下视图控制器并使用向后滑动手势时,一切都很美妙(颜色过渡在两个方面都很平滑)。
但是当我按下后退按钮时,颜色最初不会改变,导航过渡完成,然后颜色改变而没有动画。
有没有人遇到/解决了这个问题?任何线索都将受到赞赏。
答案 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,效果非常好,并且不需要一行代码。