我正在开发的应用在推送新的 View Controller 时更改了导航栏的 barTintColor
。现在我们在目标 View Controller 的 viewWillAppear:
方法中设置该颜色,但是我们有一些问题。
按照我们现在的做法,导航栏的颜色会突然改变,而栏的其余内容则照常进行动画处理。我想要的是在源颜色和目标颜色之间淡入淡出。有什么方法可以通过公共(public) Cocoa Touch API 实现这一目标吗?
最佳答案
您可以使用 UIViewControllerTransitionCoordinator 添加与 View Controller 转换的时间和动画曲线相匹配的额外动画。 .
View Controller 的 transitionCoordinator
将在 View Controller 的动画开始后设置(因此在呈现的 View Controller 的 viewWillAppear
中)。在过渡协调器上使用 animateAlongsideTransition:completion:
添加任何额外的动画。
一个例子:
[[self transitionCoordinator] animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
self.navigationController.navigationBar.translucent = NO;
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
} completion:nil];
关于objective-c - 为 UINavigationBar 的 barTintColor 设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21593760/