gpt4 book ai didi

cocoa-touch - iOS 7 UINavigationController NavBar 每个 Controller 颜色动画

转载 作者:行者123 更新时间:2023-12-04 13:03:35 24 4
gpt4 key购买 nike

有什么办法可以有不同的barTintColorUINavigationControllerUINavigationBar在不同的推送 Controller 上 具有平滑的颜色过渡动画 ?

我想要流畅的动画UINavigationBar UINavigationController期间的色调颜色的推/弹出动画,理想情况下还有交互式弹出(基于手势的 Controller 弹出)。

为什么我需要这个?我希望导航堆栈中有 1 个 Controller 具有不同的色调,指示某些任务的状态(红色/绿色等)。

到目前为止我尝试过的:

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

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

    最佳答案

    您可以使用 UIViewControllerTransitionCoordinator 获得此信息.

  • 将示例代码复制到 AController并自定义颜色。
  • 将示例代码复制到 BController并自定义颜色。
  • 就是这样!期间UINavigationController的 push/pop 转换,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];
    }

    关于cocoa-touch - iOS 7 UINavigationController NavBar 每个 Controller 颜色动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19272698/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com