如何通过CAAnimation隐藏导航栏?

时间:2011-10-08 08:03:13

标签: iphone objective-c cocoa-touch core-animation caanimation

实际上对于show / hide我正在使用UIView Animation。 简单的方法,如动画:是/否。 但它并没有给我顺利的回应.. 请给我建议......

BOOL navBarState = [self.navigationController isNavigationBarHidden];


    [UIView beginAnimations:nil context:NULL];

    [UIView setAnimationDuration:0.3];


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


    [UIView commitAnimations];

我不想给我满意的结果我想用CAAnimation做同样的事情。

2 个答案:

答案 0 :(得分:0)

为什么需要将以下行放入UIView动画大括号中:

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

为什么不用动画调用它:YES而不调用[UIView beginAnimation] / [UIView commitAnimation]?

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

答案 1 :(得分:0)

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];

使用上面的代码可以帮助您获得流畅的动画......