发布时无法隐藏状态栏

问题描述:

我正在构建一个iOS 9应用程序,其中包含horizontal页面导航,需要在某些页面上显示状态栏,并将其隐藏在其他页面上。我想使用淡入/淡出动画,所以我必须设置发布时无法隐藏状态栏

View controller-based status bar appearance = NO

和更新状态栏是这样的:

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

网页间导航时,此程序完美的作品,但我在启动时无法摆脱状态栏。

我已经尝试设置:Status bar is initially hidden = YES

添加此到NavigationControllers viewDidLoad:

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 
self.statusBarHidden = YES; 
[self setNeedsStatusBarAppearanceUpdate]; 

添加这AppDelegates didFinishLaunchingWithOptions:

application.statusBarHidden = YES; 

添加此初始页面视图控制器:

- (BOOL)prefersStatusBarHidden { 
    return YES; 
} 

检查在中普通“状态栏”中的“隐藏状态栏”选项>部署信息

和设置在链接故事板元素

但状态栏中的“无”仍然显示出来发射。如何在不改变View controller-based status bar appearance的值的情况下摆脱启动时的状态栏?

+0

为什么你不想茶基于视图控制器的状态栏外观的nge值? –

+0

我认为那必须是为了动画状态栏,当它被设置为NO时,我无法做到这一点 – Cbas

原来我在做的事是正确的,但是有一个掩埋在继承代码中的错误[[UIApplication sharedApplication] setStatusBarHidden:NO];。我grepped,但忽视了线......

(使用git grep StatusBar找到一个混帐回购协议是变异状态栏的代码行)

此外,唯一需要的代码是:

View controller-based status bar appearance = NO (在plist中)

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

随时随地状态栏需要更新(通常在viewWillAppear

changing plist file : 

set Status bar is initially hidden = YES 

add row: View controller-based status bar appearance = NO 

enter image description here

+0

这些值已经设置 – Cbas

+0

很棒!谢谢 –

+0

Wc! @GiladBrunfman – Nikunj5294

只需选中项目的隐藏状态栏,设置如图。

  1. 项目设置 - 用于启动应用程序时隐藏状态栏。

Hide Status bar

  1. 下面添加的viewController中为其中需要隐藏。
  2. - (BOOL)prefersStatusBarHidden { return YES; }

    /------ UPDATE -----/

    1. 随着隐藏状态栏的蜱 Without status bar

    2. 如果没有隐藏状态剔bar With status bar

    /------动画状态栏-----/

    在plist中。

    View controller-based status bar appearance = NO 
    

    然后在viewWillAppear方法中。

    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; 
    
开始=>
+0

我已经尝试过这两种方法(忘记提到第一个),两者都没有影响,在一起或分开 – Cbas

+0

@Cbas我只是试图在演示中粘贴代码给你。为了验证,请在** didFinishLaunchingWithOptions **方法中设置一个断点,并返回yes并检查模拟器的状态栏。 - 只做项目设置勾选选项并验证 – nikhil84

+0

屏幕在该行为黑色。我认为你必须编辑你的plist重新创建我的情况 – Cbas

为了实现你在找什么,你需要在app.plist文件中设置:

Status bar is initially hiddenYES

View controller-based status bar appearance在每个视图控制器NO

然后 it

[[UIApplication sharedApplication] setStatusBarHidden:NO]; 

隐藏它:

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 
+0

如果我把'[[ UIApplication sharedApplication] setStatusBarHidden:YES];'在我的视图控制器的viewDidLoad中,它没有任何效果,状态栏显示出来。plist的值已经设置 – Cbas

+0

你是否正在重写' - (BOOL)prefersStatusBarHidden; “我的猜测是可能有这种行为。 –

+0

是的我重写,设置为YES – Cbas

转到Targets->常规 - >部署信息:并根据该选择隐藏状态栏选项。

+0

哪里是目标? – Cbas

+0

在Xcode按cmd + 1,然后你会看到Proejcts和Targets选项卡,所以选择目标 –

+0

好吧我已经尝试过 – Cbas