【问题标题】:iOS 7 UINavigationController NavBar per controller color animationiOS 7 UINavigationController NavBar 每个控制器颜色动画
【发布时间】:2013-10-09 12:56:44
【问题描述】:

有没有办法在不同的推送控制器上拥有不同的barTintColorUINavigationControllerUINavigationBar具有平滑的颜色过渡动画

我希望在UINavigationController 的推送/弹出动画期间有一个平滑的动画UINavigationBar 的色调颜色最好还有交互式弹出(基于手势的控制器弹出)。

我为什么需要这个?我想在导航堆栈中有 1 个控制器具有不同的色调颜色来指示某些任务的状态(红色/绿色等)。

到目前为止我所尝试的:

  • viewWillAppear(查看生命周期)方法,但无法为 barTintColor 设置动画(如 setBarTintColor:animated:
  • [UIView animation...] 块中更改barTintColor,但这只是奇怪地为(可能)某些背景层的帧设置动画,而不是平滑的颜色过渡。
  • UIViewAnimationOptionTransitionCrossDissolve 更改[UIView transitionWithView:...] 块中的barTintColor,但这不会为更改设置动画。动画持续时间后立即更改为新的色调
  • 我有一个想法,在进行过程中实现新的 iOS 7 自定义过渡计算和更改导航栏的颜色,但这似乎有点过头了(特别是如果我想在任何地方保持原始动画外观)

感谢大家的任何想法和答案

【问题讨论】:

  • 您找到解决方案了吗?
  • 不幸的是,我没有:-(
  • 尝试在 all 视图控制器的 viewWillAppear 方法中设置 barTintColor。当 barTintColor 仅在第二个控制器中设置时,我遇到了这个问题。在所有控制器中设置时,条形色调颜色动画流畅(虽然没有测试交互式过渡)。

标签: cocoa-touch uinavigationcontroller ios7 uinavigationbar


【解决方案1】:

您可以使用UIViewControllerTransitionCoordinator 获取此信息。

  1. 将示例代码复制到AController 并自定义颜色。
  2. 将示例代码复制到BController 并自定义颜色。
  3. 就是这样!在UINavigationController 的推送/弹出转换期间,AController 的样式将平滑地淡入/淡出为BController 的样式。

示例代码:

-(void) viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    [[self transitionCoordinator] animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
        self.navigationController.navigationBar.translucent = NO;
        self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

        // text color
        [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];

        // navigation items and bar button items color
        self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

        // background color
        self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
    } completion:nil];
}

【讨论】:

  • IOS6你会怎么做?
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多