objective-c - 为 UINavigationBar 的 barTintColor 设置动画

标签 objective-c ios7 uinavigationcontroller uinavigationbar

我正在开发的应用在推送新的 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/

相关文章:

iphone - 更新应用程序后保留数据

iphone - UITableView 中的 UITextFields,输入的值重新出现在其他单元格中

IOS - UIImagePickerController - 限制图像的比例

ios - 我的应用程序在 Debug模式下完美运行,但在 ad hoc 模式下却不行

iOS7:日志:无法在此设备上启用 MKMapView 音高

ios - 解锁 UINavigationController 中的内容

ios7 - iPhone 应用程序提交 - 蓝牙 BLE 启用

ios - 如何复制 ios 版本的 iPhone?

iphone - 简单的 uiview 更改不起作用

iphone - 如何在NavigationController上弹出UIViewController并同时推送UIView