如何通过 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 隐藏导航栏?的主要内容,如果未能解决你的问题,请参考以下文章