我UINavigationBar在不同的视图中使用了2种不同的条纹色调.我在两个视图中都用这种方法改变了颜色:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.barTintColor = COLOR
}
Run Code Online (Sandbox Code Playgroud)
当我点击后退按钮时,颜色没有顺利改变(你可以看到最后一秒闪烁).
但是如果只是向后滑动视图而不是点击后退按钮,一切都会好的.
如何在两种情况下顺利过渡?
我注意到ios 10中条形色调动画的方式发生了变化.我创建了一个概述更改的示例项目:Github:ios10BarTintDemo
基本上在ios 9上,barTintColor可以平滑地使用 [UIViewControllerTransitionCoordinator animateAlongsideTransition]
但是在ios 10上,动画不太平滑,当弹出一个视图控制器根本没有动画时,我尝试[self.navigationController.navigationBar layoutIfNeeded]在一些类似的答案中添加,但这在推/控制器时似乎没有任何效果.
是否可以为导航层次结构中的单个视图控制器设置导航栏颜色?让默认的导航栏颜色为红色,行中的最后一个视图控制器应该是蓝色的。我使用这两行来为所述视图控制器的导航栏着色:
navigationController?.navigationBar.barTintColor = .blue
navigationController?.navigationBar.tintColor = .white
Run Code Online (Sandbox Code Playgroud)
但是当返回时(例如按下后退按钮),导航栏保持蓝色。使用上面的代码将颜色设置回红色不会做任何事情。