同时状态栏隐藏和视图转换

Posted

技术标签:

【中文标题】同时状态栏隐藏和视图转换【英文标题】:Simultaneous status bar hiding and view transition 【发布时间】:2011-09-26 20:34:34 【问题描述】:

我想在我的应用程序中从“初始化屏幕”转换为“演示屏幕”。初始化屏幕的状态栏可见,但我希望演示屏幕使用全屏。我希望状态栏在初始化屏幕消失时消失,而不是在它之前或之后。

在显示“准备运行”的初始化屏幕视图控制器的回调中,我这样做:

[UIView transitionFromView: setupViewController.view toView: runViewController.view 
    duration: 1.0 options: UIViewAnimationOptionTransitionCurlUp 
    completion: ^(BOOL finished) 
        [[UIApplication sharedApplication] setStatusBarHidden: YES withAnimation: UIStatusBarAnimationSlide];
        ];

但是状态栏一直存在,直到卷曲动画完成,然后它向上滑动。

所以我尝试了这个:

[UIView transitionFromView: setupViewController.view toView: runViewController.view 
    duration: 1.0 options: UIViewAnimationOptionTransitionCurlUp 
    completion: nil];
[[UIApplication sharedApplication] setStatusBarHidden: YES withAnimation: UIStatusBarAnimationSlide];

但是状态栏会在卷曲动画开始之前向上滑动。

所以我尝试了这个:

[UIView beginAnimations: @"whatever" context: nil];
[UIView setAnimationDuration: 1.0];
[UIApplication sharedApplication].statusBarHidden = YES;
[UIView transitionFromView: setupViewController.view toView: runViewController.view 
    duration: 1.0 options: UIViewAnimationOptionTransitionCurlUp completion: nil];
[UIView commitAnimations];

我得到了同步操作,但状态栏只是消失而不是向上滑动。

我真正想要的是状态栏与初始化屏幕一起卷曲(如果我使用卷曲或翻转,如果我使用翻转)以显示全屏,但我会满足于状态栏在初始化屏幕卷起的 1.0 秒间隔内向上滑动。

感谢您的任何建议...

【问题讨论】:

【参考方案1】:

似乎第三种方法可以按您的意愿工作,除非您使用了以下行:

[UIApplication sharedApplication].statusBarHidden = YES;

代替:

[[UIApplication sharedApplication] setStatusBarHidden: YES withAnimation: UIStatusBarAnimationSlide];

允许您设置上滑动画。

但是,我认为不可能在 curl up 动画中包含状态栏。

【讨论】:

以上是关于同时状态栏隐藏和视图转换的主要内容,如果未能解决你的问题,请参考以下文章

隐藏状态栏的视图控制器的交互式视图控制器转换

使用自定义视图控制器转换,我在哪里可以隐藏状态栏?

我已经隐藏了导航栏和状态栏,现在屏幕边缘平移手势返回不起作用,这是典型的吗?

如何在Android中隐藏状态栏

为啥视图隐藏在状态栏后面?

在某些视图控制器中隐藏状态栏 *特定*