NavigationBar 和StatusBar同时消失出现

NavigationBar和StatusBar都有支持动画的系统接口:

[[UIApplication sharedApplication] setStatusBarHidden:hidden withAnimation:UIStatusBarAnimationSlide];
[self.navigationController setNavigationBarHidden:hidden animated:animated];

但是简单这样写的话,效果不太好,NavigationBar 和StatusBar消失的时候,动画太快;出现的时候,StatusBar先出现,NavigationBar后滑出,而且动画比较突兀。

以下代码能让NavigationBar 和StatusBar同时消失出现,而且比较平滑 :

- (void)toggleStatusBarAndNavBar:(BOOL)hidden {
    UINavigationBar *navBar = self.navigationController.navigationBar;
    [[UIApplication sharedApplication] setStatusBarHidden:hidden withAnimation:UIStatusBarAnimationSlide];
    
    [UIView animateWithDuration:0.35 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
        // 先显示navigationBar
        if (!hidden)
        {
            [self.navigationController setNavigationBarHidden:hidden animated:NO];
        }
        
        navBar.frame = CGRectMake(navBar.frame.origin.x,
                                  hidden ? -navBar.frame.size.height : 20,
                                  navBar.frame.size.width,
                                  navBar.frame.size.height);
    } completion:^(BOOL finished) {
        if (hidden)
        {
            [self.navigationController setNavigationBarHidden:hidden animated:NO];
        }
    }];
}
  • StatusBar的动画风格选滑入UIStatusBarAnimationSlide,手动为NavigationBar的滑出滑入做动画。
  • 动画风格选UIViewAnimationOptionCurveEaseOut,因为消失的时候StatusBar消失比较快,NavigationBar也需要快点消失;出现的时候NavigationBar需要慢点,动画看起来比较流畅
  • 要把握好hidden属性和frame的变化动画先后关系。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,196评论 4 61
  • github排名https://github.com/trending,github搜索:https://gith...
    小米君的demo阅读 10,283评论 2 38
  • 一直想试试RN,但是因为安装环境的问题一直没有成功,中间陆陆续续因为时间的原因中断了一段时间,今天终于鼓起勇气再次...
    傅hc阅读 8,889评论 6 6
  • 为了控制自己慵懒拖的现象,也为了自己明年有一个新的起色,特给自己制定了个人人生准则和日课。 16条人生准则 1.书...
    小鹿故事集阅读 2,844评论 2 1
  • 温柔与坚强的完美结合;寒冷与温暖的统一呈现;——清晨的冰凌花。 冬季的清晨如同夜晚,黑漆漆的让人不愿睁眼,梦一样开...
    梅园遗珠阅读 3,511评论 0 0