如何通过 CAAnimation 隐藏导航栏?

Posted

技术标签:

【中文标题】如何通过 CAAnimation 隐藏导航栏?【英文标题】:How can I hide navigation bar through CAAnimation? 【发布时间】:2011-10-08 08:03:13 【问题描述】:

实际上,为了显示/隐藏,我正在使用 UIView 动画。 和像动画这样的简单方法:YES/NO。 但它并没有给我顺利的回应.. 请给我建议...

BOOL navBarState = [self.navigationController isNavigationBarHidden];


    [UIView beginAnimations:nil context:NULL];

    [UIView setAnimationDuration:0.3];


    [self.navigationController setNavigationBarHidden:!navBarState animated:NO];


    [UIView commitAnimations];

它没有给我满意的结果我想用 CAAnimation 做同样的事情..

【问题讨论】:

请向我们展示您尝试过的代码和当前正在做的事情。你的问题很模糊,没有任何例子。 【参考方案1】:

为什么要把下面这行放到UIView动画大括号里:

[self.navigationController setNavigationBarHidden:!navBarState animated:NO];

为什么不直接用 animated:YES 调用它而不调用 [UIView beginAnimation]/[UIView commitAnimation]?

[self.navigationController setNavigationBarHidden:!navBarState animated:YES];

【讨论】:

【参考方案2】:
CGRect rect = self.navigationController.navigationBar.frame;
    rect.origin.y = rect.origin.y < 0 ?
    rect.origin.y + rect.size.height
    :   rect.origin.y + rect.size.height;

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.2];
    self.navigationController.navigationBar.frame = rect;
    [UIView commitAnimations];

只需使用上面的代码,它可能会帮助您获得流畅的动画...

【讨论】:

以上是关于如何通过 CAAnimation 隐藏导航栏?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Reactjs Redux 应用程序中显示/隐藏 reactstrap 导航栏?

iOS 7隐藏导航栏时如何更改状态栏的颜色?

在iOS 7中隐藏导航栏时,如何更改状态栏的颜色?

如何在颤动中隐藏android的底部导航栏

Android如何隐藏底部虚拟按键

如何在 Swift 中使 iPhone 状态栏透明?