【问题标题】:How can I hide navigation bar through CAAnimation?如何通过 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 做同样的事情..

【问题讨论】:

  • 请向我们展示您尝试过的代码和当前正在做的事情。你的问题很模糊,没有任何例子。

标签: iphone objective-c cocoa-touch core-animation 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];
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多