在单一视图上隐藏iPhone上的状态栏?

我想在所有视图中显示状态栏,而不是一个视图。 我曾尝试修改“状态栏最初隐藏在”plist,我曾尝试:

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

这隐藏了酒吧,但留下一个丑陋的蓝色框状态栏(这不是我的观点的一部分,那里没有蓝色)。

我也尝试改变布局,希望在Xcode 4.2的“接口生成器”位的全屏和状态栏设置。

有什么build议么?

编辑 – 解决scheme的种类:

我已经完成了,包括:

  -(void)viewWillDisappear:(BOOL)animated{ [[UIApplication sharedApplication] setStatusBarHidden:YES]; } -(void)viewDidAppear:(BOOL)animated{ [[UIApplication sharedApplication] setStatusBarHidden:NO]; } 

在每一个我想要状态栏的页面上。

它仍然看起来不稳定和垃圾,因为标签栏出现,并且每次切换视图时都会重新出现。 但是我已经受够了,现在工作了大约5个小时这个愚蠢的问题,所以这将不得不做。

第二次编辑 –

通过在viewWillAppears中包含setStatusBarHidden = NO来修复震荡。 上帝知道一切如何运作,但它确实如此。

试试这一个它会运行完美..

 [[UIApplication sharedApplication] setStatusBarHidden:YES]; 

而在XIB设置状态栏没有选项。

为iOS 7。

转到info.plist并添加两个属性(如果不存在)。 将“状态栏最初隐藏”设置为“YES”并将“UIViewControllerBasedStatusBarAppearance”设置为“NO”。 这将隐藏您的应用程序的状态栏。

 #pragma mark - Hide statusbar -(void)hideStatusBar { #if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 // iOS 7.0 or later [self setNeedsStatusBarAppearanceUpdate]; #else // less than 7 [[UIApplication sharedApplication] setStatusBarHidden:YES]; #endif } - (BOOL)prefersStatusBarHidden { return YES; } 

如果有人在寻找上述解决scheme无法工作的解决scheme(并且顶部还有一个令人讨厌的蓝色20px空白),请尝试将其放在视图控制器的实现文件的viewWillAppear中,酒吧被隐藏起来。

 self.navigationController.navigationBar.frame = CGRectOffset(self.navigationController.navigationBar.frame, 0.0, -20.0); 

这真的花了我12个小时左右来解决,这是解决scheme,所以现在我传播的话,以防其他人有这个恼人的问题。

Kartik的解决scheme为我工作。

[[UIApplication sharedApplication] setStatusBarHidden:YES];

我添加到viewWillAppear:实例方法。

 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[UIApplication sharedApplication] setStatusBarHidden:YES]; self.webView.scalesPageToFit = YES; [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.co.uk"]]]; } 

我也花了很多时间。 使用Xcode 4.2,iOS5 sim。

但是当我第一次实施它的时候,那个恼人的“空间”就在那里。 我在故事板中select了视图控制器并设置属性,如下所示:大小:全屏状态栏:没有任何其他推断。

我查了想要全屏。

瞧,这一切都很好。

我知道这是一个古老的问题,但这个答案没有一个适合我,所以这是我如何在一个viewController中隐藏状态栏

首先在你的parentViewController中你必须设置:

 - (UIViewController *)childViewControllerForStatusBarHidden { if ( hideStatusBarViewController ) { return hideStatusBarViewController; } return nil } 

它只在其它情况下返回子视图控制器,否则为默认值。 当你添加你的hideStatusBarViewController时,你必须调用

 [self setNeedsStatusBarAppearanceUpdate]; 

在parentViewController上,这个函数强制读取childViewControllerForStatusBarHidden。 最后在hideStatusBarViewController中,你必须设置

 - (BOOL)prefersStatusBarHidden { return YES; } 

它是唯一适用于我的解决scheme。 我希望它能帮助别人。

我会build议你一个不同的方法:将该视图插入到应用程序的窗口中:

 YourUIAppDelegate *appDelegate = [UIApplication sharedApplication].delegate; [appDelegate.window insertSubview:self.yourView atIndex:([[appDelegate.window subviews]count])]; 

这样它会显示状态栏

我希望它可以帮助你

如果您想在单个视图中隐藏状态栏,这是一个解决scheme

 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[UIApplication sharedApplication] setStatusBarHidden:YES]; [self.view sizeToFit]; } 

这是可能有帮助的代码片段。 当视图加载显示状态栏时,当你离开视图时再次隐藏它。

 -(void)viewWillAppear:(BOOL)animated { if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)]) [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade]; else [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES]; } -(void)viewWillDisappear:(BOOL)animated { if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)]) [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; else [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES]; } 

[[UIApplication sharedApplication] setStatusBarHidden:BOOL]; 就够了,但是:

  1. 请记住在离开视图之前将其设置为NO ,否则返回的页面可能会在状态栏下方有导航栏。

  2. 确保您在隐藏状态栏的视图中设置了状态栏隐藏和显示。 我在viewDidLoad方法中closures了,最重要的是viewWillDisappear:animated方法中重新开启。 任何后来,你在麻烦。