非全屏和全屏UIViewController之间的良好幻灯片转换

Jak*_*čar 6 uiviewcontroller ios

我有一个不是全屏的视图控制器(有一个状态栏),并且想要一个全屏的模态视图控制器.

如果我在动画开始时隐藏状态栏(父视图的viewWillDisappear或模态的viewWillAppear),那么在没有状态栏的情况下父视图将会显示,看起来像一个错误.

如果我在动画结束时(父视图的viewDidDisappear或模态的viewDidAppear)执行此操作,则状态栏将在模态视图上显示片刻,即它不会显示为模态视图"覆盖它".

有没有办法很好地做到这一点?

编辑:

一种可能性是至少在动画的持续时间内创建一个带有windowLevel = alert的UIWindow.示例iAd广告似乎很好地覆盖了状态栏,没有其他窗口,所以它必须以某种方式.

Gab*_*iel 0

我在我的应用程序中使用以下代码执行此操作:

[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackOpaque];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation: UIStatusBarAnimationSlide ];


DocumentListViewController * dl = [[DocumentListViewController alloc] initWithNibName:@"DocumentListView" bundle:nil] ;
UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:dl];
[dl release];

// Go to the list of documents...
[[self.view superview] addSubview:nav.view];

nav.view.alpha = 0.0 ;

[self hideActivityAlert];

[UIView animateWithDuration:1.0 animations:^{
    nav.view.alpha = 1.0; } completion:^(BOOL A){
        [self.view removeFromSuperview];
        [self release];} ];
Run Code Online (Sandbox Code Playgroud)

动画发生时,状态栏会短暂显示。

您必须确保当状态栏隐藏时第一个视图将填充该空间。使用具有正确值的 autoresizingMask 属性。